[
https://issues.apache.org/jira/browse/KAFKA-4436?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15708624#comment-15708624
]
Ismael Juma commented on KAFKA-4436:
------------------------------------
Another major difference between KafkaStreams versus KafkaProducer and
KafkaConsumer is that the former exposes a constructor that takes StreamsConfig
while the latter do not. For KafkaProducer and KafkaConsumer, the constructor
that takes the *Config instance is private.
> Provide builder pattern for StreamsConfig
> -----------------------------------------
>
> Key: KAFKA-4436
> URL: https://issues.apache.org/jira/browse/KAFKA-4436
> Project: Kafka
> Issue Type: Improvement
> Components: streams
> Reporter: Matthias J. Sax
> Priority: Minor
>
> Currently, {{StreamsConfig}} parameters must be set "manually" as key value
> pairs. This has multiple disadvantages from a user point of view:
> - mandatory arguments could be missing
> - data types might be wrong
> - producer/consumer config parameters could conflict as they might have the
> same name (user needs to know to prefix them to avoid conflict)
> Those problems have different impact: either a runtime exception is thrown if
> the problem is detected (e.g. missing parameter or wrong type) or the
> application is just not configured correctly (producer/consumer has wrong
> config).
> A builder pattern would avoid those problems by forcing the user in the first
> place to specify thing correctly (otherwise, it won't compile). For example
> something like this:
> {noformat}
> StreamsConfig config = StreamsConfig.builder()
> .setApplicationId(String appId)
> .addBootstrapServer(String host, int port)
> .addBootstrapServer(String host, int port)
> .addZookeeper(String host, int port)
> .addZookeeper(String host, int port)
> .setStateDirectory(File path)
> .setConsumerConfig(
> ConsumerConfig.builder()
> .setAutoOffsetReset(...)
> .build()
> )
> .build();
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)