如何使消费者适应2个相关主题

时间:2019-09-02 14:51:04

标签: apache-kafka kafka-topic

我有2个主题

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

我只有一个使用者,需要掌握两个主题/分区中的最新数据才能做出正确的决定(如果未保留则删除一个单元,如果存在则保留一个单元)

我决定将它们分为2个不同的主题进行概念隔离,并且在任何时候我都需要第三项服务才能与各个单元进行交互,这是很容易的。

但是,如何处理某个主题上另一个主题可能发生或可能延迟的并发操作的想法呢?

谢谢

1 个答案:

答案 0 :(得分:1)

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

为每个主题吸引一个消费者,然后在另一个主题“超前”时,将其暂停(suspend),在另一个主题恢复时再恢复。

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

根据您使用的是subscription()还是Assign(),您可能仍需要继续轮询暂停的使用者,以免触发重新平衡。

如果所讨论的主题未完全排序(这意味着某些事件发布得晚些,则顺序混乱),则需要本地状态(基本上是窗口流以流连接)。可以自己实现,但这是流处理框架开始派上用场的地方。