# Groups

- kafkit-client supports modern consumer groups.
- kafkit-client supports Kafka share groups.
- kafkit-client does not support classic consumer groups.

## Modern Consumer Groups

- Use for normal Kafka stream processing.
- Each partition is assigned to one member at a time.
- Ordering is preserved within a partition for the assigned member.
- Membership uses the modern Kafka consumer group protocol.
- Heartbeats use the modern group flow.
- Topic and regex subscriptions use modern group membership.
- Manual assignment is available when group membership is not wanted.

## Share Groups

- Use for work-queue style processing.
- Multiple members can share records from the same partitions.
- Records are acquired before processing.
- Records are acknowledged after processing.
- Ordering guarantees differ from normal partition-owned consumer groups.
- Share groups are a separate Kafka protocol surface from normal consumer groups.

## Classic Groups

- Classic consumer groups are not implemented.
- Classic `JoinGroup` is not implemented.
- Classic `SyncGroup` is not implemented.
- Classic group heartbeat membership is not implemented.
- Older brokers that only support classic groups are not a kafkit-client target.

## Choosing A Group Type

- Choose a modern consumer group for partition-ordered stream processing.
- Choose a share group for distributed task processing.
- Choose manual assignment for direct partition control without group coordination.
- Upgrade classic-group-only clusters before adopting kafkit-client consumers.
