You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@kafka.apache.org by "Matthias J. Sax (Jira)" <ji...@apache.org> on 2022/05/19 18:04:00 UTC

[jira] [Commented] (KAFKA-13913) Provide builders for KafkaProducer/KafkaConsumer and KafkaStreams

    [ https://issues.apache.org/jira/browse/KAFKA-13913?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17539718#comment-17539718 ] 

Matthias J. Sax commented on KAFKA-13913:
-----------------------------------------

There was some discussion about this in the past (cf KAFKA-3943 and KAFKA-4436).

There was also some push back on this idea. Might be good to revisit those arguments. (Not sure if it's contained in the Jira, or PR, or maybe mailing list.)

> Provide builders for KafkaProducer/KafkaConsumer and KafkaStreams
> -----------------------------------------------------------------
>
>                 Key: KAFKA-13913
>                 URL: https://issues.apache.org/jira/browse/KAFKA-13913
>             Project: Kafka
>          Issue Type: Improvement
>          Components: clients, streams
>    Affects Versions: 3.2.0
>            Reporter: François Rosière
>            Assignee: François Rosière
>            Priority: Major
>              Labels: kip
>             Fix For: 3.3.0
>
>
> To have more flexibility, builders should be provided for the following objects
>  * KafkaProducer
>  * KafkaConsumer
>  * KafkaStreams 
> These builders will give an easy way to construct these objects using different arguments/combinations without having to add a new constructor every time a new parameter is required.
> They will also allow using already configured dependencies coming from an injection framework such as Spring (see [https://github.com/spring-projects/spring-kafka/issues/2244]).
> From a user point of view, builders would be used as follow
> {noformat}
> KafkaProducer kafkaProducer = new KafkaProducerBuilder<String, MyPojo(<MAP_OR_PROPERTIES_OR_CONFIG>)  
>   .withKeySerializer(<KEY_SERIALIZER>)  
>   .withValueSerializer(<VALUE_SERIALIZER>)  
>   .withInterceptors(<LIST_OF_INTERCEPTORS>)  
>   .withPartitioner(<PARTITIONER>) 
>   .withMetricsReporter(<METRICS_REPORTER>)  
>   .build();  
> KafkaConsumer consumer = new KafkaConsumerBuilder<String, MyPojo(<MAP_OR_PROPERTIES_OR_CONFIG>)  
>   .withKeyDeserializer(<KEY_DESERIALIZER>)  
>   .withValueDeserializer(<VALUE_DESERIALIZER>)  
>   .withInterceptors(<LIST_OF_INTERCEPTORS>)  
>   .withMetricsReporter(<METRICS_REPORTER>)  
>   .build(); 
> KafkaStreams kafkaStreams = new KafkaStreamsBuilder(<TOPOLOGY>, <MAP_OR_PROPERTIES_OR_CONFIG>)  
>   .withProducerInterceptors(<LIST_OF_PRODUER_INTERCEPTORS>)  
>   .withConsumerInterceptors(<LIST_OF_CONSUMER_INTERCEPTORS>)  
>   .withTime(<TIME>)  .withKafkaClientSupplier(<KAFKA_CLIENT_SUPPLIER>)  
>   .withMetricsReporter(<METRICS_REPORTER>)  
>   .build();{noformat}
> This KIP can be seen as the continuity of the KIP-832.
> More details can be found in the related KIP [https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=211884640]



--
This message was sent by Atlassian Jira
(v8.20.7#820007)