One opt-in, backwards-compatible addition: tunable per-queue drain concurrency. The drain previously ran exactly one receiver per SQS queue per task, so a single slow message (a hung VCS webhook, a 30s audit-trail call) would head-of-line block every other message on that queue. These knobs let you run multiple independent receivers per queue so one slow message no longer stalls the rest.
What's included
- Per-queue drain concurrency - eight new
drain_concurrency_<queue>variables (async_jobs,async_jobs_fifo,cronjobs,dlq,dlq_fifo,events,iot,webhooks) that flow into the drain container asDRAIN_CONCURRENCY_*env vars. Each sets how many concurrent receivers run for that queue. Every variable defaults to1, which reproduces today's one-receiver-per-queue behavior, so nothing changes on upgrade unless you raise a value.
Note
These are opt-in throughput knobs, not a fix-everything dial. Raise concurrency for queues where you have seen head-of-line blocking from slow handlers (webhooks, events, async jobs are the usual suspects). Higher values mean more in-flight work per drain task, so size the drain service accordingly.
New Contributors
Full Changelog: v2.5.0...v2.6.0