如何让我的消费者消费 2 个依赖的主题

How to align my consumer to consume 2 depending topics

我有这个用例,我有 2 个主题

主题 1(单位)-> P0 / 主题 2(预订)-> P0

我有一个消费者需要从两个 topics/partitions 获取最新数据才能做出正确的决定(如果没有保留则删除一个单元,如果存在则保留该单元)

我决定将它们放在 2 个不同的主题中以进行概念隔离,并且在任何时候我都需要第 3 个服务来与单元进行交互,只有这样才能以一种简单的方式实现。

但是关于如何处理可能出现的并发操作或可能延迟的事件从一个主题到另一个主题的想法?

谢谢

假设每个单独的主题(或分区)都按照您的喜好排序,您可以使用 pause(), resume() and seek() 调用来实现。

为每个主题启动一个消费者,然后在另一个 "ahead" 太多时暂停()它,并在另一个赶上回来时恢复()。

这基本上是合并两个排序列表,就在 kafka 之上。

根据您是否使用 subscribe() 或 assign(),您可能仍需要继续轮询暂停的消费者以不触发重新平衡。

如果有问题的主题没有完全排序(意味着某些事件发布晚了,乱序)你需要本地状态(基本上是一个窗口流来流连接)。可以自己实现,但这是流处理框架开始派上用场的地方。