Kafka Streams处理器api允许多集群拓扑吗?

时间:2020-06-17 23:06:20

标签: apache-kafka apache-kafka-streams

使用kafka处理器API(而非DSL)从源主题读取并写入目标主题 它对于单个kafka集群设置(即,如果源主题和目标主题都位于同一集群上)工作正常,但是当源主题和目标主题位于不同的kafka集群上时,我将获得目标处理器上下文的NullPointerException

Topology
topology.addSource("mySource", "SourceTopic");
topology.addProcessor("SourceStreamProcessor",()->new SourceStreamProcessor(), "mySource");         

topology.addProcessor("TargetProcessor",()->new TargetProcessor(), "Target");
topology.addSink("sink1","OUTPUT_TOPIC1","TargetProcessor");
topology.addSink("sink2","OUTPUT_TOPIC2","TargetProcessor");


Properties sourceProcessorProps = new Properties();
props.put(StreamsConfig.APPLICATION_ID_CONFIG, "SourceStreamProcessor"); // Kafka Cluster 1
props.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG, "dev_Cluser_xx.org:9092");

Properties targetProcessorProps = new Properties();
props.put(StreamsConfig.APPLICATION_ID_CONFIG, "targetStreamProcessor"); // Kafka Cluster 2
props.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG, "test_Cluser_xx.org:9092");

我们如何使用kafka流处理器API从一个群集中的一个主题写入另一个群集中的另一个主题?

1 个答案:

答案 0 :(得分:1)

Kafka Streams不支持从一个Kafka群集读取数据并向另一个Kafka群集写入数据。

您可以处理一个群集中的消息,然后使用Mirror Maker将其复制到另一个群集中。