将 Kafka 输入流动态连接到多个输出流

2022-09-04 04:21:27

Kafka Streams中是否内置了允许将单个输入流动态连接到多个输出流的功能? 允许基于真/假谓词进行分支,但这不是我想要的。我希望每个传入的日志确定它将在运行时流式传输到的主题,例如,日志将流式传输到主题,日志将流式传输到主题。KStream.branch{"date": "2017-01-01"}topic-2017-01-01{"date": "2017-01-02"}topic-2017-01-02

我可以打电话给直播,然后写信给卡夫卡的制片人,但这似乎不是很优雅。有没有更好的方法可以在Streams框架内做到这一点?forEach


答案 1

如果您想根据数据动态创建主题,则目前(及更早)在Kafka的流式API中没有任何支持。您需要自己创建并实现动态“路由”(例如使用 或 )。请注意,您需要执行同步写入以避免数据丢失(不幸的是,这性能不是很高)。有计划使用动态主题路由扩展流式处理 API,但目前没有针对此功能的具体时间表。v0.10.2KafkaProducerKStream#foreach()KStream#process()

您还应该考虑一个因素。如果您事先不知道目标主题,而只是依赖于所谓的“主题自动创建”功能,则应确保使用所需的配置设置(例如,分区数或复制因子)创建这些主题。

作为“主题自动创建”的替代方法,您还可以使用管理客户端(自 )创建具有正确配置的主题。查看 https://cwiki.apache.org/confluence/display/KAFKA/KIP-4+-+Command+line+and+centralized+administrative+operationsv0.10.1


答案 2

推荐