...
Please keep the discussion on the mailing list rather than commenting on the wiki (wiki discussions get unwieldy fast).
Note this is a joint worked work proposed by David Jacot, guozhang Wang and Jason Gustafson.
...
Code Block | ||||
---|---|---|---|---|
| ||||
public final class ConfigResource { /** * Type of resource. */ public enum Type { GROUP((byte) 16), BROKER_LOGGER((byte) 8), BROKER((byte) 4), TOPIC((byte) 2), UNKNOWN((byte) 0); } } |
kafka-consumer-groups
--type
The kafka-consumer-group command line tool will be extended to support the –type filter which allows to list or to describe groups implementing a specific type.
Code Block | ||||
---|---|---|---|---|
| ||||
kafka-consumer-groups.sh -–bootstrap-server localhost:9092 -–list -–type <comma separated list of types> kafka-consumer-groups.sh -–bootstrap-server localhost:9092 -–describe -–type <comma separated list of types> |
--validate-regex
The kafka-consumer-group command line tool will be extended to support the –validate-regex which allows to verify the regular expression use by a group to subscribe to topics.
Code Block | ||||
---|---|---|---|---|
| ||||
kafka-consumer-groups.sh -–bootstrap-server localhost:9092 -–validate-regex <pattern> |
Case Studies
Basic
Let’s look at a few examples to illustrate the rebalance logic. Let’s assume that the group is subscribed to the topic foo which has 3 partitions.
...
- Group (epoch=0)
- Empty
- Target Assignment (epoch=0)
- Empty
- Member Assignment
- Empty
* The above format represents the group state as it is persisted in the __consumer_offsets topic.
Member A joins the group. The coordinator bumps the group epoch to 1, adds A to the group, and creates an empty member assignment.
...
At this point B can transitions to epoch 1 but cannot get foo-2 until A revokes it. Note that the persisted target assignment of B already includes foo-2 here but B does not get it yet.
When A heartbeats, the group coordinator instructs him to revoke foo-2.
...