Spring Kafka 消费者在主题空闲时从消费者组中移除
Spring Kafka consumer removed from consumer group when topic idle
版本
Spring 引导 1.5.x,
Spring 引导 2.4.x,
阿帕奇卡夫卡 0.10.2
情况
我们有两个托管在不同服务器上的服务实例。每个实例初始化多个 Kafka 消费者。所有的消费者都在收听同一个话题,并且属于同一个消费者群体。
我们 不 依赖 Spring Boot/Spring Kafka 来配置 ConcurrentKafkaListnerContainerFactory 及其 DefaultKafkaConsumerFactory。除了 max.poll.records、session.timeout.ms 和 heartbeat.interval.ms 之外,所有消费者配置属性都设置为默认的 Apache Kafka 消费者 属性 值。确认模式设置为记录。
我们正在使用 @KafkaListener 注释并使用初始化的 ConcurrentKafkaListenerContainerFactory 的 bean 名称设置其 containerFactory 属性 并将其设置为主题 属性。
问题
当一个主题在一两天内没有收到任何消息发布时,所有消费者都会从消费者组中删除。
我找不到发生这种情况的任何理由。根据我阅读 Apache Kafka 和 Spring Kafka 文档的理解,如果在 max.poll.interval.ms 内调用 poll,则消费者被认为是活跃的。而如果在session.timeout.ms内consumer持续发送心跳,则认为consumer还活着。根据文档,轮询被连续调用,心跳以 heartbeat.interval.ms.
设置的时间间隔发送
问题
- Kafka 是否有设置或 属性 Spring Boot/Spring 设置导致消费者在一两天内未使用空闲主题的任何记录从消费者组中删除?
- 如果是,是否可以关闭它?缺点是什么?
- 如果没有,有没有办法在不重启服务的情况下重新加入消费者组,缺点是什么?
那个 Kafka 版本非常非常旧。
旧版本在 24 小时没有 activity 后删除了消费者偏移量,即使消费者仍然连接。在 2.0 中,这增加到 7 天。对于较新的代理(自 2.1 起),只有当消费者实际未连接 7 天时,消费者抵消才会被删除。
见https://kafka.apache.org/documentation/#upgrade_200_notable
您可以增加经纪人对老经纪人的 offsets.retention.minutes
。
版本 Spring 引导 1.5.x, Spring 引导 2.4.x, 阿帕奇卡夫卡 0.10.2
情况
我们有两个托管在不同服务器上的服务实例。每个实例初始化多个 Kafka 消费者。所有的消费者都在收听同一个话题,并且属于同一个消费者群体。 我们 不 依赖 Spring Boot/Spring Kafka 来配置 ConcurrentKafkaListnerContainerFactory 及其 DefaultKafkaConsumerFactory。除了 max.poll.records、session.timeout.ms 和 heartbeat.interval.ms 之外,所有消费者配置属性都设置为默认的 Apache Kafka 消费者 属性 值。确认模式设置为记录。
我们正在使用 @KafkaListener 注释并使用初始化的 ConcurrentKafkaListenerContainerFactory 的 bean 名称设置其 containerFactory 属性 并将其设置为主题 属性。
问题
当一个主题在一两天内没有收到任何消息发布时,所有消费者都会从消费者组中删除。 我找不到发生这种情况的任何理由。根据我阅读 Apache Kafka 和 Spring Kafka 文档的理解,如果在 max.poll.interval.ms 内调用 poll,则消费者被认为是活跃的。而如果在session.timeout.ms内consumer持续发送心跳,则认为consumer还活着。根据文档,轮询被连续调用,心跳以 heartbeat.interval.ms.
设置的时间间隔发送问题
- Kafka 是否有设置或 属性 Spring Boot/Spring 设置导致消费者在一两天内未使用空闲主题的任何记录从消费者组中删除?
- 如果是,是否可以关闭它?缺点是什么?
- 如果没有,有没有办法在不重启服务的情况下重新加入消费者组,缺点是什么?
那个 Kafka 版本非常非常旧。
旧版本在 24 小时没有 activity 后删除了消费者偏移量,即使消费者仍然连接。在 2.0 中,这增加到 7 天。对于较新的代理(自 2.1 起),只有当消费者实际未连接 7 天时,消费者抵消才会被删除。
见https://kafka.apache.org/documentation/#upgrade_200_notable
您可以增加经纪人对老经纪人的 offsets.retention.minutes
。