François Rosière created KAFKA-13913:
----------------------------------------
             Summary: 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


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