首页 > 解决方案 > spring kafka如何处理保持心跳

问题描述

在 kafka 消费者文档https://kafka.apache.org/10/javadoc/index.html?org/apache/kafka/clients/consumer/KafkaConsumer.html中,它指出需要注意确保每次调用 poll如此频繁,否则经纪人会认为消费者已经死了。

最可靠的程序相当复杂:

对于消息处理时间变化不可预测的用例,这些选项都可能不够用。处理这些情况的推荐方法是将消息处理移动到另一个线程,这允许消费者在处理器仍在工作时继续调用 poll。必须注意确保提交的偏移量不会超过实际位置。通常,您必须禁用自动提交并仅在线程完成处理记录后手动提交已处理的偏移量(取决于您需要的传递语义)。另请注意,您将需要暂停分区,以便在线程完成处理先前返回的记录之前,不会从 poll 接收到新记录。

spring kafka 会在引擎盖下为我处理这个吗?

标签: apache-kafkaspring-kafka

解决方案


文档中非常简短地提到了心跳。显然,心跳是由 Spring-Kafka 在不同的线程上管理的。

由于版本 0.10.1.0 心跳在后台线程上发送

您还可以阅读此github 问题以了解有关心跳的更多信息。


推荐阅读