Consumer groups
Это содержимое пока не доступно на вашем языке.
Model (fan-out, non-Kafka)
Section titled “Model (fan-out, non-Kafka)”- One group = one stream + N members (independent checkpoints).
- Each member receives events where
global_position % N == member_index. - Member index is derived from sorted member IDs (stable ordering).
- Each member maps to one durable subscription (
groupID:memberID).
This is fan-out: every event is handled by exactly one member.
vs competing consumers
Section titled “vs competing consumers”| Fan-out group | Competing on one subscription_id |
|
|---|---|---|
| Goal | partition workload | scale one handler |
| Delivery | each event once across group | each event once across pullers |
| Checkpoint | per member | shared subscription checkpoint |
Rebalance
Section titled “Rebalance”On join/leave:
- Recompute
Nand member indices. - Update each member subscription’s
MemberIndex/MemberCount. - Members whose partition changed reset checkpoint via replay from partition start.
Persistence
Section titled “Persistence”data/subscriptions/groups/<groupID>.json — survives restart.
Legacy monolithic groups.json is migrated on load.
gRPC: CreateConsumerGroup, ListConsumerGroups, JoinConsumerGroup, LeaveConsumerGroup, GetConsumerGroup.
CLI: chronacta consumer-group create|join|leave|list|get.
Not supported
Section titled “Not supported”- Kafka-compatible consumer protocol
- Cross-stream groups
- Dynamic partition count without rebalance

