[
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.
More details can be found in the related KIP
[https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=211884640]
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
> Affects Versions: 3.2.0
> 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.
> 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)