Queues & Streams

One-line summary: Understanding message queues and stream processing, delivery guarantees, and when to use each.

Prerequisites: Overload & Backpressure, understanding of messaging patterns.


Mental Model

Queue vs Stream

Queue: Point-to-point messaging (one producer, one consumer).

Stream: Publish-subscribe messaging (one producer, many consumers).

graph LR Producer[Producer] --> Queue[Queue] Queue --> Consumer1[Consumer 1] Queue --> Consumer2[Consumer 2] Producer --> Stream[Stream] Stream --> Sub1[Subscriber 1] Stream --> Sub2[Subscriber 2] Stream --> Sub3[Subscriber 3] style Queue fill:#99ccff style Stream fill:#ffcc99

Key insight: Queues are for task distribution, streams are for event distribution.


Internals & Architecture

Message Queues

Queue model: - Producer: Sends messages to queue - Queue: Stores messages - Consumer: Processes messages from queue

Properties: - At-least-once delivery: Messages delivered at least once - Ordering: May preserve ordering (FIFO queues) - Durability: Messages persisted until consumed

Use case: Task queues, job processing.

Stream Processing

Stream model: - Producer: Publishes events to stream - Stream: Stores events - Subscribers: Subscribe to stream and process events

Properties: - At-least-once delivery: Events delivered at least once - Ordering: May preserve ordering per key - Durability: Events persisted for retention period

Use case: Event-driven architectures, real-time processing.


Failure Modes & Blast Radius

Queue Failures

Scenario 1: Queue Overflow

Scenario 2: Consumer Failure


Observability Contract

Metrics

Alerts


Change Safety

Queue Configuration Changes


Tradeoffs

Queue vs Stream

Queue: - Pros: Simple, task distribution - Cons: Single consumer per message

Stream: - Pros: Multiple consumers, event distribution - Cons: More complex, event ordering challenges


Operational Considerations

Best Practices

  1. Choose right model: Queue for tasks, stream for events
  2. Monitor queues: Track depth and processing rate
  3. Handle failures: Retry logic, dead letter queues
  4. Scale consumers: Scale based on queue depth

What Staff Engineers Ask in Reviews


Further Reading

Comprehensive Guide: Further Reading: Queues & Streams

Quick Links: - Pub/Sub: Delivery Guarantees - Overload & Backpressure - Idempotency & Retries - Back to Distributed Systems


Exercises

  1. Choose messaging: When do you use queues vs streams? What are the tradeoffs?

  2. Handle backlog: Your queue has a large backlog. How do you handle it?

  3. Design stream: Design a stream processing system for real-time events.

Answer Key: View Answers