[ 
https://issues.apache.org/jira/browse/KAFKA-13913?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

François Rosière updated KAFKA-13913:
-------------------------------------
    Description: 
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.

  was:
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.


> 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
>            Reporter: François Rosière
>            Assignee: François Rosière
>            Priority: Major
>
> 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.



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

Reply via email to