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)