Kafka,控制其他分区偏移量

时间:2018-09-25 12:09:41

标签: apache-kafka kafka-consumer-api

我有一个Kafka主题和两个消费群体,每个消费群体都消费一个主题。

一堆服务使用消费者组A消费主题,另一束服务使用消费者组B消费主题。

通常,消费者A组比B组更快地处理事件。

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

有没有办法做到这一点?

如果B组落后太久,我可以减慢A组的消耗吗?还是可以使用Kafka让B组以任何方式控制A组的偏移量。

(消费者服务b变慢的原因有两点,供应少,后端使用的速度慢)

1 个答案:

答案 0 :(得分:1)

  

如果B组落后太久,我是否可以减慢A组的消费量

如果您有权访问B组的职位,则可以避免在B组追赶之前避免在A组的使用者中调用poll(如果您使用的是Spring-kafka等厚包装,则可能需要停止并重新创建您的听众)。

根据如何配置组以节省偏移量,另一个组还可以通过读取内部 __consumer_offsets主题来访问组的位置(您可能想了解bin/kafka-consumer-groups.sh的方式从服务器目录执行此操作。

  

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

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

总的来说,要点是-如果使用者已经在运行-除非您创建了东西,否则就没有通信。