【问题标题】:Kafka Stream automatically read from new topic?Kafka Stream 自动读取新主题?
【发布时间】:2020-09-09 22:58:36
【问题描述】:

有什么方法可以让我的 Kafka Stream 应用程序自动读取新创建的主题?

即使主题是在流应用程序已经运行时创建的

类似于在主题名称中使用通配符,如下所示:

KStream<String, String> rawText = builder.stream("topic-input-*");

为什么我需要这个?

现在,我有多个客户端将数据(都具有相同的架构)发送到他们自己的主题,而我的流应用程序从这些主题中读取数据。然后我的应用程序进行一些转换并将结果写入一个单个主题

虽然所有的客户都可以写同一个主题,但一个行为不端的客户也可以代表其他人写作。所以我为每个客户创建了单独的主题。问题是,每当有新客户出现时,我都会创建新主题并使用脚本为他们设置 ACL,但这还不够。我还必须停止我的流媒体应用程序,编辑代码,添加新主题,编译,打包,放到服务器上并再次运行!

【问题讨论】:

  • 现在 5 个客户,但未来最多 50 个客户。如何强制客户端写入自己的分区?是否有用于分区的 ACL?
  • 我不能让客户写同一个主题。因为我需要知道是哪个客户写的消息。因此,我希望他们在他们的消息中发送 clientI-ID。但问题是,任何客户端都可以使用其他人的客户端 ID。
  • 虽然这不能解决您的全部问题,但可能会有所帮助。如果将主题移至配置文件,则无需重新编译/重新部署。
  • @Dhiraj 我实际上打算这样做。但我仍然需要重新启动我的直播,以便他们获得新主题。

标签: apache-kafka apache-kafka-streams


【解决方案1】:

Kafka Streams 支持模式订阅:

builder.stream(Pattern.compile("topic-input-*"));

(我希望语法是正确的;从我的头顶不确定...但重点是,您可以使用采用模式的 stream() 方法的重载,而不是传入 String .)

【讨论】:

猜你喜欢
  • 2021-07-09
  • 2022-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多