Skip to content

Queues · 2 Oct 2026 · 4 min read

Queues, retries and dead letters

Email, invoicing and connector sync do not belong on the web request. They belong on a queue with a place to fail.

A request that sends mail, writes an invoice and calls an ERP will time out on the worst day, which is the day you needed it. I move that work to Laravel Queues, Redis, RabbitMQ or Kafka depending on how many consumers are waiting.

Retry is not infinite. A poison message has to leave the main lane. Dead-letter handling on the ERP connectors is what kept one bad payload from stalling the sync between ERP, CRM and accounting.

The worker is allowed to fail. The API is not allowed to wait for it. The user sees the accepted state, and the audit log shows whether the job finished.

More notes