Guides
Delivery groups
Give each tenant, account or other group its own delivery rate, so one burst doesn't starve everyone else.
A destination has one queue. If one of your tenants triggers a flood, everyone behind it waits. Delivery groups split that queue by a value in each request, and give every group its own rate and its own concurrency.
Configure it
Set groups on a URL destination:
{
"groups": {
"key": "body.customer_id",
"rate": 5,
"period": "second",
"max_in_flight": 2,
"overrides": {
"cus_priority": { "rate": 50, "period": "second" }
}
}
}
| Field | Meaning |
|---|---|
key |
One path into the request as received: body.<path>, headers.<name> or query.<name>. |
rate, period |
The default cap for every group: 1 to 1,000 per second, minute or hour. |
max_in_flight |
Optional. Requests out at once per group, 1 to 50. |
overrides |
Up to 100 group values with their own rate, period and max_in_flight. |
How it behaves
- Each group has its own rate. Busy groups take turns, and idle groups hold nothing back.
- The destination’s own
max_in_flightandrate_per_secondremain the ceiling over all groups. - An event with no value at the key goes into the
unknowngroup, which has the default rate. - The group is worked out once, when the event reaches the destination. Changing the rule affects new events; a redrive works it out again.
See what is happening
GET /v1/destinations/:id/groups lists the groups seen on a destination. In Events you can filter by delivery_group. If a group’s oldest unsent event has waited 15 minutes, Ensue sends a destination.group_backlog notification, and destination.group_backlog_cleared once they catch up.