spring-kafka-消费者暂停与恢复

原生Kafka可以很容易的控制消费者线程暂停与恢复,但是Spring-Kafka中我一直不太清楚如何暂停恢复,直到我在工作中遇到了适当的业务场景,于是我在百度上搜索了一下,再结合看源码,总结出了如下3个步骤:

1: 自动注入KafkaListenerEndpointRegistry

    @Autowired
    private KafkaListenerEndpointRegistry kafkaListenerEndpointRegistry;

2: 在KafkaListener上指定id和groupId。其中groupId是为了统一管理,如果不指定的话,该Listener会将id当作groupId

@KafkaListener(id = KAFKA_LISTENER_ID, groupId = "${consumer.group_id}", topics = {"${consumer.topic}"})

3: 根据id获取Listener的实例,然后控制暂停和恢复

MessageListenerContainer listenerContainer = kafkaListenerEndpointRegistry.getListenerContainer(KAFKA_LISTENER_ID);
listenerContainer.pause(); 	// 暂停消费
listenerContainer.resume(); // 恢复消费

你可能感兴趣的:(spring-kafka,Spring-boot,kafka,spring)