如果通过心跳判断消费者没有死,但是pull间隔超过了max.poll.interval.ms,broker会将此消费者移除么?

人间不值得 发表于: 2020-12-10   最后更新时间: 2020-12-14 22:00:30   1,529 游览

kafka版本:0.10.2.1

业务有这种场景:处理一条消息需要花费1h-1d的时间,所以pull间隔必定超过max.poll.interval.ms。但是从0.10.1版本开始session.timeout.ms 和 max.poll.interval.ms 解耦了,是两个独立的线程,不需要在处理完消息之后再发送心跳,这样就避免了处理时间太长导致的移除问题。

但是发现还是频繁的发生reblance,怀疑是pull间隔超过了max.poll.interval.ms导致的,如果事实如此的话改怎么设置参数既能改善reblance的情况,又能保证group内消费者的健康呢?是不是将max.poll.interval.ms设置成一天就可以呢?

发表于 2020-12-10
添加评论

兄弟,我感觉你的场景不适合用kafka。。
如果没有积压的消息,建议你可以优先提交offset,然后在处理消息,如果kafka中没有积压的消息,就都正常了。
调整这么长时间,如果kafka集群真的出故障了,那就无法及时察觉了。

半兽人 -> 半兽人 3年前

另外,只改max.poll.interval.ms不行的,如session.timeout.msrequest.timeout.ms等也要改。
具体参见:https://www.orchome.com/535
搜索timeout关键字。

你的答案

查看kafka相关的其他问题或提一个您自己的问题