使用 Kafka Streams 将单个事件发布到多个主题

问题描述 投票:0回答:1

如何在 Kafka 流中动态生成单个事件到多个主题?

我遇到了TopicNameExtractor,但它一次只返回 1 个主题。

是否有其他方法可以为 kafka 流中的多个主题生成单个事件,或者我可以通过组合 KafkaStreamsKafkaTemplate 来创建混合版本来生成事件?

spring-boot apache-kafka spring-kafka apache-kafka-streams
1个回答
0
投票

这取决于你所说的动态是什么意思。例如,在 Kafka Streams 中,您可以将一个流分成多个分支,这些分支将根据输入记录上的谓词转到不同的主题:

Map<String, KStream<String, Long>> branches =
    stream.split(Named.as("Branch-"))
        .branch((key, value) -> key.startsWith("A"),  /* first predicate  */
             Branched.as("A"))
        .branch((key, value) -> key.startsWith("B"),  /* second predicate */
             Branched.as("B"))
.defaultBranch(Branched.as("C"))

参见 https://docs.confluence.io/platform/current/streams/developer-guide/dsl-api.html

© www.soinside.com 2019 - 2024. All rights reserved.