kafka-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Matthias J. Sax (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (KAFKA-4436) Provide builder pattern for StreamsConfig
Date Wed, 04 Jan 2017 19:19:58 GMT

    [ https://issues.apache.org/jira/browse/KAFKA-4436?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15799096#comment-15799096

Matthias J. Sax commented on KAFKA-4436:

I guess we would need a KIP for this anyway -- should we try to do one to get a discussion
on dev list? I am afraid, that this will just stall otherwise.

> 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

View raw message