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)