Matthias J. Sax created KAFKA-4436:
--------------------------------------

             Summary: 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)

Reply via email to