主题空闲时,Spring Kafka消费者从消费者组中删除

主题空闲时,Spring Kafka消费者从消费者组中删除,spring,spring-boot,apache-kafka,kafka-consumer-api,spring-kafka,Spring,Spring Boot,Apache Kafka,Kafka Consumer Api,Spring Kafka,版本 弹簧靴1.5.x, 弹簧靴2.4.x, ApacheKafka 0.10.2 形势 我们有两个托管在不同服务器上的服务实例。每个实例初始化多个Kafka使用者。所有的消费者都在听同一个话题,并且属于同一个消费者群体。 我们不是依赖Spring Boot/Spring Kafka来配置ConcurrentKafkaListnerContainerFactory及其默认KafkConsumerFactory。除了max.poll.records、session.timeout.ms和heart

版本 弹簧靴1.5.x, 弹簧靴2.4.x, ApacheKafka 0.10.2

形势

我们有两个托管在不同服务器上的服务实例。每个实例初始化多个Kafka使用者。所有的消费者都在听同一个话题,并且属于同一个消费者群体。 我们不是依赖Spring Boot/Spring Kafka来配置ConcurrentKafkaListnerContainerFactory及其默认KafkConsumerFactory。除了max.poll.records、session.timeout.ms和heartbeat.interval.ms之外,所有使用者配置属性都设置为默认的Apache Kafka使用者属性值。确认模式设置为记录

我们正在使用@KafkaListener注释,并使用初始化的ConcurrentKafkaListenerContainerFactory的bean名称设置其containerFactory属性,并将其设置为topics属性

问题

当一个主题在一两天内没有发布任何消息时,所有消费者都将从消费者组中删除。 我找不到发生这种事的任何理由。根据我阅读ApacheKafka和SpringKafka文档的理解,如果在max.poll.interval.ms内调用poll,则认为消费者是活动的。如果消费者在session.timeout.ms内连续发送心跳,则消费者被视为处于活动状态。根据文档,轮询是连续调用的,心跳按heartbeat.interval.ms设置的间隔发送

问题

  • 是否有一个设置或属性Spring Boot/Spring Kafka Is设置会导致一两天未使用空闲主题中任何记录的使用者从使用者组中删除
  • 如果是,是否可以关闭此功能?其缺点是什么
  • 如果没有,是否有一种方法可以在不重新启动服务的情况下重新加入消费者群体,其缺点是什么

  • 卡夫卡的版本非常非常古老

    较旧的版本在24小时内没有任何活动后删除了消费者补偿,即使消费者仍处于连接状态。在2.0中,这增加到7天。对于较新的代理(自2.1版起),只有当消费者在7天内没有实际连接时,才会删除消费者补偿

    您可以使用较旧的代理增加代理的
    偏移量.retention.minutes