[ 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. 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 > 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. -- This message was sent by Atlassian Jira (v8.20.7#820007)