簡體   English   中英

Kafka Stream 和 Java:如果符合特定條件,則將相同的 object 發送到多個主題

[英]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.

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