当每个主题的更新不相同时,使用 Kafka Streams 在代理中加入来自 4 个主题的数据

Join data from 4 topics in broker using Kafka Streams when updates are not same in each of the topics

我正在处理一项要求,即处理从 SQL 数据存储提取到 Kafka Broker 的数据,对应于 SQL 数据存储中的 4 个不同 table 的 4 个不同主题.我正在使用 Kafka Connect 将数据提取到主题中。

我现在想加入这些主题的数据并聚合它们并将它们写回另一个主题。该主题将依次由消费者订阅以填充 NOSQL 数据存储,该数据存储将用于呈现 UI.

我知道Kafka Streams可以用来加入主题。

我的查询是,从 SQL 数据存储 table 中提取的数据可能并不总是包含所有 4 个 table 的数据。 table 中只有 2 个会定期更新。一个将得到更新,但与另一个 2 的频率不同。剩下的一个是静态的(有点像大师 table)。

所以,我不确定当主题中的记录计数不匹配时,我们如何才能真正将它们与 Kafka Streams 结合起来。

有没有人遇到过类似的问题。如果是这样,您能否提供您的 thoughts/code 片段。

行数根本不重要...为什么它会对连接结果有任何影响?

您可以将所有 4 个主题作为一个 KTable 阅读,然后进行连接。最后,您将聚合应用于连接结果 KTable 并将最终结果写入主题。像这样:

KTable t1 = builder.table("topic1");
KTable t2 = builder.table("topic2");
KTable t3 = builder.table("topic3");
KTable t4 = builder.table("topic4");

KTable joinResult = t1.join(t2, ...).join(t3, ...).join(t4, ...);

joinResult.groupByKey(...).aggregate(...).to("result-topic);