I also found the documentation difficult to parse when it came time to
implement group APIs. I ended up just reading the client source code and
trying api calls until it made sense.

My general description from off the top of my head:

(1) have all consumers submit a shared protocol_name string* and
bytes-serialized protocol_metadata, which includes the topic(s) for
subscription.
(2) All consumers should be prepared to parse a JoinResponse and identify
whether they have been selected as the group leader.
(3) The non-leaders go straight to SyncGroupRequest, with group_assignment
empty, and will wait get their partition assignments via the
SyncGroupResponse.
(4) Unlike the others, the consumer-leader will get the agreed
protocol_name and all member's metadata in its JoinGroupResponse.
(5) The consumer-leader must apply the protocol_name assignment strategy to
the member list + metadata (plus the cluster metadata), generating a set of
member assignments (member_id -> topic partitions).
(6)The consumer-leader then submits that member_assignment data in its
SyncGroupRequest.
(7) The broker will take the group member_assignment data and split it out
into each members SyncGroupResponse (including the consumer-leader).

At this point all members have their assignments and can start chugging
along.

I've tried to encapsulate the group request / response protocol info
cleanly into kafka-python, if that helps you:

https://github.com/dpkp/kafka-python/blob/1.0.2/kafka/protocol/group.py

I'd be willing to help improve the docs if someone points me at the "source
of truth". Or feel free to ping on irc #apache-kafka

-Dana

*for java client these are 'range' or 'roundrobin', but are opaque and can
be anything if you aren't interested in joining groups that have
heterogeneous clients. related, the protocol_metadata and member_metadata
are also opaque and technically can be anything you like. But sticking with
the documented metadata specs should in theory allow heterogenous clients
to cooperate.

On Tue, Mar 29, 2016 at 8:21 AM, Heath Ivie <hi...@autoanything.com> wrote:

> Does anyone have better documentation around the group membership APIs?
>
> The information about the APIs are great at the beginning but get
> progressively  sparse towards then end.
>
> I am not finding enough information about the values of the request fields
> to join / sync the group.
>
> Can anyone help me or send me the some additional documentation?
>
> Heath Ivie
> Solutions Architect
>
>
> Warning: This e-mail may contain information proprietary to AutoAnything
> Inc. and is intended only for the use of the intended recipient(s). If the
> reader of this message is not the intended recipient(s), you have received
> this message in error and any review, dissemination, distribution or
> copying of this message is strictly prohibited. If you have received this
> message in error, please notify the sender immediately and delete all
> copies.
>

Reply via email to