簡體   English   中英

將Kafka輸入流動態連接到多個輸出流

[英]Dynamically connecting a Kafka input stream to multiple output streams

Kafka Streams內置了哪些功能,允許將單個輸入流動態連接到多個輸出流? KStream.branch允許基於真/假謂詞的分支,但這不是我想要的。 我希望每個傳入的日志確定它將在運行時流式傳輸的主題,例如,日志{"date": "2017-01-01"}將流式傳輸到主題topic-2017-01-01和日志{"date": "2017-01-02"}將流式傳輸到主題topic-2017-01-02

我可以在流上調用forEach ,然后寫給Kafka制作人,但這看起來並不優雅。 在Streams框架中有更好的方法嗎?

如果您想根據數據動態創建主題,那么目前Kafka的Streaming API中沒有任何支持( v0.10.2及更早版本)。 您需要創建一個KafkaProducer並自己實現動態“路由”(例如使用KStream#foreach()KStream#process() )。 請注意,您需要執行同步寫入以避免數據丟失(不幸的是,這不是非常高性能)。 有計划使用動態主題路由擴展Streaming API,但目前此功能沒有具體的時間表。

還有一個需要考慮的因素。 如果您不提前知道目標主題並且只依賴於所謂的“主題自動創建”功能,則應確保使用所需的配置設置創建這些主題(例如,分區數量)或復制因子)。

作為“主題自動創建”的替代方法,您還可以使用Admin Client(自v0.10.1 )來創建具有正確配置的主題。 請參閱https://cwiki.apache.org/confluence/display/KAFKA/KIP-4+-+Command+line+and+centralized+administrative+operations

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM