Spring Cloud Kafka Stream-如何为同一频道使用两个不同的Kafka集群?

时间:2019-01-11 19:27:29

标签: apache-kafka apache-kafka-streams spring-cloud-stream spring-kafka

我们有一个场景,我们要使用集群1上的kafka主题的数据,但是要在集群2上创建KTable主题(分区和更改日志)。

频道绑定-

spring.cloud.stream.bindings.member.destination: member
spring.cloud.stream.bindings.member.consumer.useNativeDecoding: true
spring.cloud.stream.bindings.member.consumer.headerMode: raw
spring.cloud.stream.kafka.streams.bindings.member.consumer.keySerde: org.apache.kafka.common.serialization.Serdes$StringSerde
spring.cloud.stream.kafka.streams.bindings.member.consumer.valueSerde: io.confluent.kafka.streams.serdes.avro.GenericAvroSerde

创建Ktable-

protected KTable<String, GenericRecord> createKTable(String field, KStream<String, GenericRecord> stream, String stateStore) {
        return stream
                .map((s, genericRecord) -> KeyValue.pair(field, genericRecord))
                .groupByKey()
                .reduce((oldVal, newVal) -> newVal, Materialized.as(stateStore));
    }

因此成员主题位于集群1上,但是我们想在不同集群上创建以下ktable主题,不确定在这种情况下如何使用两种不同的kafka活页夹-

application-member-store-repartition
application-member-store-changelog

1 个答案:

答案 0 :(得分:1)

单个Kafka Streams应用程序只能连接到一个群集。 根据下面链接的答案,您可以创建两个不同的实例,但是它们将是不同的应用程序。

更多详细信息,请Kafka Streams - connecting to multiple clusters