=> Queue workers for serverless Laravel applications
Because monoliths weren't considered when AWS designed the SQS-Lambda integration, it lacks some crucial features. A monolith lambda processes jobs from various queues, and AWS starts multiple worker pools that scale independently with no coordination between them. This leads to the following:
❌ The number of workers increase beyond the lambda's concurrency limit.
❌ One pool for one queue may fill all available concurrency slots, which starves the other queues.
❌ The lambda may throttle, resulting jobs exceeded the configured maximum attempts without actually running.
With Workerless, you can configure the maximum concurrency across multiple queues and control the queue prioritization.
Workerless runs as a standalone binary with zero dependencies. It monitors a number of configured queues & invokes the lambda function once for each job it picks up.
Using Workerless, you may control job prioritization in two ways:
🟣 Sorted Lists [high,medium]: Processes jobs from `medium` only if `high` is empty.
🟣 Weighted Lists [payments:2,mail:1]: Processes jobs from `payments` ~66% of the time, and from `mail` ~33%.
Having a single pool with limited concurrency and prioritization configured means that:
✅ The concurrent invocations limit will never be exceeded.
✅ No throttling will happen. Meaning `$this->attempts` will be accurate.
✅ You'll have control over job prioritization.
_ _ __ _ _ | (_)/ _| ___| |_(_)_ __ ___ ___ | | | |_ / _ \ __| | '_ ` _ \ / _ \ | | | _| __/ |_| | | | | | | __/ |_|_|_| \___|\__|_|_| |_| |_|\___|
Unlimited projects, lifetime access for $99 Get it now
_ _ / \ _ __ _ __ _ _ __ _| | / _ \ | '_ \| '_ \| | | |/ _` | | / ___ \| | | | | | | |_| | (_| | | /_/ \_\_| |_|_| |_|\__,_|\__,_|_|
Unlimited projects, one year access for
$39
Get it now
You can find more information in the documentation.
My name is Mohamed Said @themsaid. I'm a former core team member at Laravel. I helped build & maintain Vapor & Horizon.