ARCHIVED from builddistributedsystem.com on 2026-04-28 — URL: https://builddistributedsystem.com/tracks/queues/tasks/task-15-2-consumer-groups
TASK

Implementation

Implement Kafka-style consumer groups:

  1. Topic has multiple partitions
  2. Messages with same key go to same partition
  3. Consumer group: each partition assigned to one consumer
  4. Multiple groups each see all messages
  5. Rebalance partitions when consumers change

This enables parallel consumption while maintaining per-key ordering.

Sample Test Cases

Parallel consumptionTimeout: 5000ms
Input
{
  "src": "c0",
  "dest": "n1",
  "body": {
    "type": "init",
    "msg_id": 1,
    "node_id": "n1",
    "node_ids": [
      "n1"
    ]
  }
}
Expected Output
{"src":"n1","dest":"c0","body":{"type":"init_ok","in_reply_to":1,"msg_id":0}}

Hints

Hint 1
Partition messages by key
Hint 2
Each partition assigned to one consumer per group
Hint 3
Rebalance on consumer join/leave
OVERVIEW

Theoretical Hub

Consumer Groups

Kafka pioneered consumer groups. Within a group, partitions are divided among consumers for parallelism. Different groups independently consume all messages (pub-sub pattern with scaling).

Partition Assignment

When consumers join/leave, partitions must be reassigned. Cooperative rebalancing minimizes disruption. Partition count limits max parallelism - plan accordingly.

Key Concepts

consumer groupspartitioningparallel processing
main.py
python
Add Consumer Groups with Partitions - Queues | Build Distributed Systems