无法暂停 Spring Kafka 容器

Not able to Pause Spring Kafka Container

我想暂停 Kafka 监听器。

  1. 我调用 http://localhost:8080/pause 来暂停容器
  2. 我发送有关该主题的数据。
  3. 消费者开始消费消息

我预计消费者会暂停,但消息仍在从 Kafka 主题中读取。 我怎样才能暂停消费者? 我正在使用 2.5.0(Spring 引导父级)

     @KafkaListener(id="foo" ,topics = "mytopic-3", concurrency = "3", groupId = "mytopic-1-groupid")
        

@Autowired
    private KafkaListenerEndpointRegistry kafkaListenerEndpointRegistry;
        
          @GetMapping("/pause")
            public void pause(  )
            {
                
                System.out.println(" Pausing Kafka Listener");
                kafkaListenerEndpointRegistry.getListenerContainer("foo").pause();
            }
         
        
          @Configuration
    @EnableKafka
    public class KafkaConsumerConfig implements KafkaListenerConfigurer {
        
        
        @Autowired
        private LocalValidatorFactoryBean validator;
        
       
        @Override
        public void configureKafkaListeners(KafkaListenerEndpointRegistrar registrar) {
              registrar.setValidator(this.validator);
            
        }
        

所有 2.7.x 版本都有一个错误。修复了 today 容器在暂停后立即恢复的问题。

引导 2.5(当前为 2.5.2)引入 2.7.x;下周的 2.5.3 版本应该有修复 (spring-kafka 2.7.4).

修复在快照 2.7.4-SNAPSHOT 中,您可以通过将 https://repo.spring.io/snapshot 添加到您的构建配置来获得它。

2.7.4 应该在星期一可用(并在本周晚些时候启动 2.5.3)。

您也可以临时降级到 2.6.9 (spring-kafka)。