[英]Kafka Stream with Java: Send the same object to multiple topics if it matches certain criteria
任務:我們聽一個 Kafka 主題。 處理后,我們希望看到三個不同的 output 主題中的消息,而同一消息可能 go 到多個 output 主題。 如何使用 Kafka-Streams model 這樣的解復用器?
我嘗試使用:
Map<String, KStream<String, String>> branches = builder
.stream("input", Consumed.with(Serdes.String(), Serdes.String()))
.transform(supplier1, "TRANSIT_STORE_NAME")
.split(Named.as("prepare_data"))
.branch((k, v) -> v != null && v.contains("xyz"), Branched.as("xyz"))
.branch((k, v) -> v != null && v.contains("abc"), Branched.as("abc"))
.noDefaultBranch();
branches.get("prepare_dataxyz")
.transform(supplier2)
.to("output.xyz");
branches.get("prepare_dataabc")
.transform(supplier2)
.to("output.abc");
因此,對於主題“output.xyz”和主題“output.abc”,具有值 = “abcxyz_blabla”的記錄理論上應該為 go。
但是branch()的作用方式是將消息 go 發送到第一個適當的分支/主題。 同樣的效果還有filter() 。
那么不要只使用一個String#contains
。
.branch((k, v) -> v != null && v.contains("abc") && v.contains("xyz"), Branched.as("both"))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.