【发布时间】: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