卡夫卡,控制其他分区偏移量



我有一个 Kafka 主题和两个消费者组,每个组使用一个主题。

一组服务使用使用者组 A 使用主题,另一组服务使用使用者组 B 使用主题。

通常,使用者组 A 处理事件的速度比组 B 快得多。

我想防止 A 组中的消费者远远领先于 B 组中的消费者。

有没有办法做到这一点?

如果 B 组落后太远,我是否可以减缓 A 组的消耗,或者我是否可以让 B 组使用 Kafka 以任何方式控制 A 组的偏移量。

(消费者服务B缓慢的原因是两件事,配置较少,使用的后端较慢)

如果B组落后太远,我是否可以减缓A组的消费

如果你可以访问B组的位置,那么你可以避免在A组的消费者中调用poll,直到B组赶上来(如果你使用某种厚包装,如spring-kafka,你可能需要停止并重新创建你的听众)。

根据组在保存偏移量方面的配置方式,另一个组还可以通过从内部__consumer_offsets主题读取来访问组的位置(您可能希望查看来自服务器目录的bin/kafka-consumer-groups.sh如何做到这一点)。

我可以让B组以任何方式控制A组的偏移量吗

没有。您可以写入__consumer_offsets以更改组 A 的偏移量,但该值仅在重新创建使用者时读取,而不是在它仍在运行时读取。基本上,如果你想要这种级别的通信,你需要编写自己的代码,使组B服务与组A服务通信,以通过seek改变其偏移量。

一般来说,关键是 - 如果消费者已经在运行 - 那么就没有通信,除非你创造一些东西。

最新更新