At client initialization, we need to determine which of the ConsumerDelegate implementations to use:
There are conditions defined by KIP-848 that determine client eligibility to use the new protocol. This will be modeled by the—deep breath—ConsumerGroupProtocolVersionResolver.
- Determine at what point in the Consumer initialization the network communication should happen
- Determine what RPCs to invoke in order to determine eligibility (API versions, IBP version, etc.)
- Implement the network client lifecycle (startup, communication, shutdown, etc.)
- Determine the fallback path in case the client is not eligible to use the protocol