...
Code Block |
---|
JoinGroupRequest => GroupId GroupType SessionTimeout MemberId SupportedProtocols GroupId => String GroupType => String SessionTimeout => int32 MemberId => String GroupProtocols => [Protocol ProtocolMetadata] Protocol => String ProtocolMetadata => bytes |
JoinGroup Response
The response is similarly modified to remove the fields specific to consumer group management. The coordinator is responsible for analyzing the supported protocols from each group member and choosing one which all members support, which is then transmitted to group members in the join group response. Note that the metadata from each group member for the chosen protocol is returned in the response to all members. This is to allow each member to propagate some local information (such as topic subscriptions) to the entire group. The generation id, as before, is incremented on every successful iteration of the join group protocol.
The basic idea behind the coordinator's protocol selection algorithm is to consider the protocols supported by all members in terms of the preference (as indicated by the position in the list). This means that if all members list protocol "a" before protocol "b," then the coordinator will choose "a." If there is no agreement in terms of preference among the supported protocols which all members support, then one is chosen randomly.
...