Kafka 多次消费同一条消息
Kafka consuming same messge multiple times
我正在 kafka 队列中排队一条消息。
Kafka 支持:
enable.auto.commit=true
auto.commit.interval.ms=5000
max.poll.interval.ms=30000
处理我的消息大约需要 10 分钟。所以消息每 5 分钟就会继续处理一次。
然后我把道具max.poll.interval.ms
改成了20分钟。现在问题已解决。
但我的问题是:为什么会这样。由于我已经启用了自动提交并且它应该每 5 秒发生一次,那么为什么在前一种情况下我的消息没有被标记为已提交
当 enable.auto.commit
设置为 true
时,每 auto.commit.interval.ms
次提交最大偏移量。但是,只有在调用 poll()
时才会发生这种情况。在每次民意调查中,在您的情况下,每 20 分钟 (max.poll.interval.ms
),检查 enable.auto.commit
。每当您 poll()
时,消费者都会检查是否到了提交它在上次轮询中返回的偏移量的时间。
现在,在您的情况下,每 20 分钟调用一次 poll()
,这意味着在提交偏移量之前甚至可能需要额外的 20 分钟(+5000 毫秒)。
我正在 kafka 队列中排队一条消息。
Kafka 支持:
enable.auto.commit=true
auto.commit.interval.ms=5000
max.poll.interval.ms=30000
处理我的消息大约需要 10 分钟。所以消息每 5 分钟就会继续处理一次。
然后我把道具max.poll.interval.ms
改成了20分钟。现在问题已解决。
但我的问题是:为什么会这样。由于我已经启用了自动提交并且它应该每 5 秒发生一次,那么为什么在前一种情况下我的消息没有被标记为已提交
当 enable.auto.commit
设置为 true
时,每 auto.commit.interval.ms
次提交最大偏移量。但是,只有在调用 poll()
时才会发生这种情况。在每次民意调查中,在您的情况下,每 20 分钟 (max.poll.interval.ms
),检查 enable.auto.commit
。每当您 poll()
时,消费者都会检查是否到了提交它在上次轮询中返回的偏移量的时间。
现在,在您的情况下,每 20 分钟调用一次 poll()
,这意味着在提交偏移量之前甚至可能需要额外的 20 分钟(+5000 毫秒)。