java - 如何根据某些值字段在运行时创建 Kafka 主题名称

标签 java apache-kafka-streams

我有一个要求,我必须根据 <Value object> 中字段的不同值创建主题名称。 。这样所有的records<K,V>具有相似字段值的进入 Topic_<Field> 。我该如何使用 kstream 来做到这一点?

最佳答案

在 Kafka 1.1.0 中,您可以使用 branch() 将流拆分为子流,然后通过添加不同的接收器运算符(即 to ()) 到每个子流。

Kafka 2.0(将于六月发布)添加了新的“动态路由”功能,可以简化此场景。比较:https://cwiki.apache.org/confluence/display/KAFKA/KIP-303%3A+Add+Dynamic+Routing+in+Streams+Sink

请注意,Kafka Streams 要求手动创建接收器主题 - Kafka Streams 不会为您创建任何接收器主题。正如@Hemant 提到的,您可以打开自动主题创建。但是,一般不建议这样做(原因之一是您可能需要不同主题的不同配置,但通过自动创建,所有内容都将使用相同的默认配置创建)。

另请注意,如果通过将“不良数据”发送到应用程序并创建数百或数千个主题(通过为每条消息指定不同的主题名称)来启用自动主题创建,则恶意应用程序可能会对您的 Kafka 集群进行 DDoS。因此,不建议启用自动创建主题,而是手动创建主题,存在风险。

关于java - 如何根据某些值字段在运行时创建 Kafka 主题名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50487943/

相关文章:

java - 如何突出显示 JTextPane 中的所有文本?

java - 用于空间模拟器的 OpenGL

java - 如何构建在 HttpPost 中使用的 JSONobject 请求

java - AVRO 原始类型的 Serde 类

apache-kafka - 外行术语中的流处理和 Kafka 流是什么?

java - HashMap 的值中的泛型类型 ("List<? extends> ")

java - 如何让Java程序从特定的Jar中选择类?

apache-kafka - 卡夫卡流 : PolicyViolationException: Topic replication factor must be 3

java - kafka 流 - 如何为 KTable 设置新 key

apache-kafka - Kafka Streams - 解释 KTable 及其关联的 Store 仅每 30 秒更新一次的原因