[ https://issues.apache.org/jira/browse/KAFKA-15277?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Kirk True updated KAFKA-15277: ------------------------------ Description: As mentioned above, there are presently two different, coexisting implementations of the {{Consumer}} interface: {{KafkaConsumer}} ("old") and {{PrototypeAsyncConsumer}} ("new"). Eventually, these will be reorganized using the delegation pattern. The top-level {{KafkaConsumer}} that implements the old protocol will be renamed as {{LegacyKafkaConsumerDelegate}} and {{PrototypeAsyncConsumer}} will be renamed as {{{}AsyncKafkaConsume{}}}{{{}rDelegate{}}}. It is assumed that neither {{{}AsyncKafkaConsume{}}}{{{}rDelegate{}}} nor {{{}LegacyKafkaConsume{}}}{{{}rDelegate{}}} will be top-level implementations of {{{}Consumer{}}}, but will likely implement an internal interface that is better suited to the needs of the top-level {{{}KafkaConsumer{}}}. Provide the Java client support for the consumer delegates, including: * Create {{ConsumerDelegate}} interface * Clone {{{}KafkaConsumer{}}}, rename as {{LegacyKafkaConsumerDelegate}} and refactor to implement {{ConsumerDelegate}} * Rename {{PrototypeAsyncConsumer}} to {{AsyncKafkaConsumerDelegate}} and refactor to implement the {{ConsumerDelegate}} interface * Refactor the (original) {{KafkaConsumer}} to remove the core implementation, instead delegating to the {{{}ConsumerDelegate{}}}, which will be hard-coded to use {{LegacyKafkaConsumerDelegate}} * Once available (in KAFKA-15284), use the {{ConsumerGroupProtocolVersionResolver}} to determine which delegate to use This task is part of the work to implement support for the new KIP-848 consumer group protocol. was: As mentioned above, there are presently two different, coexisting implementations of the {{Consumer}} interface: {{KafkaConsumer}} ("old") and {{PrototypeAsyncConsumer}} ("new"). Eventually, these will be reorganized using the delegation pattern. The top-level {{KafkaConsumer}} that implements the old protocol will be renamed as {{LegacyKafkaConsumerDelegate}} and {{PrototypeAsyncConsumer}} will be renamed as {{{}AsyncKafkaConsume{}}}{{{}rDelegate{}}}. It is assumed that neither {{{}AsyncKafkaConsume{}}}{{{}rDelegate{}}} nor {{{}LegacyKafkaConsume{}}}{{{}rDelegate{}}} will be top-level implementations of {{{}Consumer{}}}, but will likely implement an internal interface that is better suited to the needs of the top-level {{{}KafkaConsumer{}}}. Provide the Java client support for the consumer delegates, including: * Create {{ConsumerDelegate}} interface * Clone {{{}KafkaConsumer{}}}, rename as {{LegacyKafkaConsumerDelegate}} and refactor to implement {{ConsumerDelegate}} * Rename {{PrototypeAsyncConsumer}} to {{AsyncKafkaConsumerDelegate}} and refactor to implement the {{ConsumerDelegate}} interface * Refactor the (original) {{KafkaConsumer}} to remove the core implementation, instead delegating to the {{{}ConsumerDelegate{}}}, which will be hard-coded to use {{LegacyKafkaConsumerDelegate}} * Once available, use the {{ConsumerGroupProtocolVersionResolver}} to determine which delegate to use This task is part of the work to implement support for the new KIP-848 consumer group protocol. > Design & implement support for internal Consumer delegates > ---------------------------------------------------------- > > Key: KAFKA-15277 > URL: https://issues.apache.org/jira/browse/KAFKA-15277 > Project: Kafka > Issue Type: Task > Components: clients, consumer > Reporter: Kirk True > Assignee: Philip Nee > Priority: Major > Labels: consumer-threading-refactor, kip-848, > kip-848-client-support > > As mentioned above, there are presently two different, coexisting > implementations of the {{Consumer}} interface: {{KafkaConsumer}} ("old") and > {{PrototypeAsyncConsumer}} ("new"). Eventually, these will be reorganized > using the delegation pattern. The top-level {{KafkaConsumer}} that implements > the old protocol will be renamed as {{LegacyKafkaConsumerDelegate}} and > {{PrototypeAsyncConsumer}} will be renamed as > {{{}AsyncKafkaConsume{}}}{{{}rDelegate{}}}. It is assumed that neither > {{{}AsyncKafkaConsume{}}}{{{}rDelegate{}}} nor > {{{}LegacyKafkaConsume{}}}{{{}rDelegate{}}} will be top-level implementations > of {{{}Consumer{}}}, but will likely implement an internal interface that is > better suited to the needs of the top-level {{{}KafkaConsumer{}}}. > Provide the Java client support for the consumer delegates, including: > * Create {{ConsumerDelegate}} interface > * Clone {{{}KafkaConsumer{}}}, rename as {{LegacyKafkaConsumerDelegate}} and > refactor to implement {{ConsumerDelegate}} > * Rename {{PrototypeAsyncConsumer}} to {{AsyncKafkaConsumerDelegate}} and > refactor to implement the {{ConsumerDelegate}} interface > * Refactor the (original) {{KafkaConsumer}} to remove the core > implementation, instead delegating to the {{{}ConsumerDelegate{}}}, which > will be hard-coded to use {{LegacyKafkaConsumerDelegate}} > * Once available (in KAFKA-15284), use the > {{ConsumerGroupProtocolVersionResolver}} to determine which delegate to use > This task is part of the work to implement support for the new KIP-848 > consumer group protocol. -- This message was sent by Atlassian Jira (v8.20.10#820010)