...
Code Block | ||
---|---|---|
| ||
public class KafkaStreams { // deprecating old constructors @Deprecated public KafkaStreams(final TopologyBuilder builder, // old TopologyBuilder final Properties props); @Deprecated public KafkaStreams(final TopologyBuilder builder, // old TopologyBuilder final KStreamBuilderStreamsConfig config); @Deprecated public KafkaStreams(final TopologyBuilder builder, // old TopologyBuilder final StreamsConfig config, final KafkaClientSupplier clientSupplier); // adding new constructors public KafkaStreams(final TopologyBuilder builder, // new TopologyBuilder final Properties props); public KafkaStreams(final TopologyBuilder builder, // new TopologyBuilder final KStreamBuilderStreamsConfig config); public KafkaStreams(final TopologyBuilder builder, // new TopologyBuilder final StreamsConfig config, final KafkaClientSupplier clientSupplier); public KafkaStreams(final KStreamBuilder builder, // new KStreamBuilder final Properties props); public KafkaStreams(final KStreamBuilder builder, // new KStreamBuilder final KStreamBuilderStreamsConfig config); public KafkaStreams(final KStreamBuilder builder, // new KStreamBuilder final StreamsConfig config, final KafkaClientSupplier clientSupplier); } |
...
The newly added KStreamBuilder
used the new TopologyBuilder
as a member (no class hierarchy anymore – using it as member gives a clear separation between PAPI and DSL).
Because the new {{TKStreamBuilder
does not inherit from new TopologyBuilder
we need to add some more constructors to KafkaStreams
.
Note: because of backward compatibility, removed DSL specific classes offered by old TopologyBuilder
must be offered by InternalTopologyBuilder
for now. However, after both deprecated classes got removed, this cleanup can be done (and does not require a KIP anymore, because it's internal refactoring -- we just need to create a JIRA for this). Thus, this KIP falls short of separating PAPI and DSL completely. But it's a necessary first step to do the separation in a backward compatible way (backward compatibility requires a two step approach).
...