You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@kafka.apache.org by "François Rosière (Jira)" <ji...@apache.org> on 2022/05/18 20:04:00 UTC

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

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)