Skip to content
Latchkey

What Is a Message Queue? Buffering Work Between Services

A message queue is a buffer that holds messages between a producer and a consumer so each can work at its own pace.

A message queue decouples the thing that creates work from the thing that does it. The producer drops a message in; the consumer picks it up when ready. If consumers fall behind, the queue absorbs the backlog instead of dropping work or overloading a downstream service. It is one of the most common building blocks of asynchronous systems.

How a queue works

A producer enqueues a message; a consumer dequeues it, processes it, and acknowledges it. The queue typically guarantees that a message is delivered at least once and is held until acknowledged, so crashes do not silently lose work.

What queues give you

  • Buffering: spikes are smoothed instead of overwhelming consumers.
  • Decoupling: producer and consumer scale independently.
  • Retry: failed messages can be redelivered.
  • Durability: messages survive a consumer restart.

Delivery guarantees to design for

Most queues are at-least-once, meaning a message can arrive twice. Consumers must be idempotent so reprocessing the same message does no harm. Messages that keep failing usually land in a dead-letter queue for inspection.

Testing queue-backed code

In CI, queue logic is often tested two ways: unit tests with a fake or in-memory queue, and integration tests against a real queue running as a service container. The integration layer is what catches serialization, ordering, and acknowledgment bugs.

Queues change deploy safety

Because a consumer can be redeployed while messages sit in the queue, you can deploy without dropping in-flight work. But a message-format change must stay backward compatible, or a new producer can enqueue messages an old consumer cannot read.

Spinning up queues per build

Integration tests that start a real broker each run add boot time to the pipeline. Warm runners (like Latchkey provides) keep that overhead from dominating fast feedback.

Key takeaways

  • A message queue buffers work so producers and consumers run at their own pace.
  • At-least-once delivery means consumers must be idempotent.
  • Message formats are contracts that must stay backward compatible across deploys.

Related guides

Tired of flaky CI? Latchkey auto-heals failed jobs and retries them for you. Start free →