@@ -111,17 +111,28 @@ static const struct rd_kafka_feature_map {
111111 },
112112 },
113113 {
114- /* @brief >=0.9.0: Broker-based balanced consumer groups. */
114+ /* @brief >=0.9.0: Broker-based balanced consumer groups (classic) . */
115115 .feature = RD_KAFKA_FEATURE_BROKER_BALANCED_CONSUMER ,
116116 .depends =
117117 {
118- {RD_KAFKAP_FindCoordinator , 0 , 0 },
119- {RD_KAFKAP_OffsetCommit , 1 , 2 },
120- {RD_KAFKAP_OffsetFetch , 1 , 1 },
121- {RD_KAFKAP_JoinGroup , 0 , 0 },
122- {RD_KAFKAP_SyncGroup , 0 , 0 },
123- {RD_KAFKAP_Heartbeat , 0 , 0 },
124- {RD_KAFKAP_LeaveGroup , 0 , 0 },
118+ {RD_KAFKAP_FindCoordinator , 0 , INT16_MAX },
119+ {RD_KAFKAP_OffsetCommit , 1 , INT16_MAX },
120+ {RD_KAFKAP_OffsetFetch , 1 , INT16_MAX },
121+ {RD_KAFKAP_JoinGroup , 0 , INT16_MAX },
122+ {RD_KAFKAP_SyncGroup , 0 , INT16_MAX },
123+ {RD_KAFKAP_Heartbeat , 0 , INT16_MAX },
124+ {RD_KAFKAP_LeaveGroup , 0 , INT16_MAX },
125+ {-1 },
126+ },
127+ },
128+ {
129+ /* @brief Broker-based balanced consumer groups (KIP 848). */
130+ .feature = RD_KAFKA_FEATURE_BROKER_BALANCED_CONSUMER ,
131+ .depends =
132+ {
133+ {RD_KAFKAP_ConsumerGroupHeartbeat , 0 , INT16_MAX },
134+ {RD_KAFKAP_OffsetCommit , 9 , INT16_MAX },
135+ {RD_KAFKAP_OffsetFetch , 9 , INT16_MAX },
125136 {-1 },
126137 },
127138 },
@@ -145,7 +156,18 @@ static const struct rd_kafka_feature_map {
145156 .feature = RD_KAFKA_FEATURE_SASL_GSSAPI ,
146157 .depends =
147158 {
148- {RD_KAFKAP_JoinGroup , 0 , 0 },
159+ {RD_KAFKAP_JoinGroup , 0 , INT16_MAX },
160+ {-1 },
161+ },
162+ },
163+ {
164+ /* @brief >=0.10.0: SASL (GSSAPI) authentication.
165+ * Fallback in case JoinGroup is removed along with the
166+ * "classic" consumer group protocol. */
167+ .feature = RD_KAFKA_FEATURE_SASL_GSSAPI ,
168+ .depends =
169+ {
170+ {RD_KAFKAP_SaslHandshake , 0 , INT16_MAX },
149171 {-1 },
150172 },
151173 },
0 commit comments