微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

即使手动提交了先前的消息,kafka 消费者也没有从主题中获取消息

如何解决即使手动提交了先前的消息,kafka 消费者也没有从主题中获取消息

我在 Kafka Topic 中有两条消息(假设是偏移量 1 和 2),并且两条消息都放置在同一个分区中(假设是 p1)。

我的消费者应用是这样的:

enter image description here

我的消费者正在接收消息 1(从 patition 1 偏移 1)并向 Kafka 发送手动提交信号,然后等待 5 秒。

我的期望是因为提交信号进入了 kafka,而我的线程 1 正在等待 5 秒,另一个消费者线程应该从分区 1 中提取消息 2 并在单独的线程中处理它。

然而,它不是这样工作的。它正在一个一个地处理。只有在线程 1 完成 5 秒后,它才会从主题获取第二条消息。

注意:我已确保将并行消费者的数量设置为 1 个以上(在我的情况下为 5,最大消费者池大小为 10)。

我做错了什么吗?有没有人遇到过类似的问题?如果是这样,解决方案是什么?

谢谢, 巴拉

解决方法

每个分区一次只能被一个线程使用,并且该线程将继续等待(还有其他因素),直到触发重新平衡,然后将该分区分配给不同的线程。

将触发再平衡

  • 手动或
  • 当新线程被添加到相同的消费者组或
  • 当其中一个线程停止调用 poll 方法 max.poll.interval.ms 多毫秒(默认为 5 分钟)

python vscode extension 是一个博客,其中包含更多详细信息。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。