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

François Rosière commented on KAFKA-13913:
------------------------------------------

[~mjsax] , thanks for your comment. The two referenced Jira issues were about 
adding builders for configs (didn't find anything clear about the push back) 
while here, the idea would be to have builders on the producers, consumers and 
kafka streams.

Previous proposal made in KIP-832 was about adding more constructors to 
directly expose the config object but builders have been proposed and looks 
more user friendly. 

These builders are only exposing meaningful methods for the users taking care 
of type safety, auto completion, overrides, etc. It's also a straightforward 
way to support injection of already configured dependencies such as the 
interceptors, serializers/deserializers. Simple configurations and complex 
configurations could still be provided using the current approach.

So, don't see any reasons to not progress in that direction.

> 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)

Reply via email to