KafkaListener开启/关闭监听
有些时候可能我们不希望再消费消息了,这时候就需要把监听器关闭了,剩下的消息留着其他时间消费 代码如下:
/**
* KafkaListener监听启停工具类
*/
@Component
@Slf4j
public class KafkaListenerRegistryUtil {
@Resource
private KafkaListenerEndpointRegistry registry;
/**
* KafkaListener恢复监听
*/
public void resume(String listenerId) {
if(StringUtils.isBlank(listenerId)){
return;
}
//判断监听容器是否启动,未启动则将其启动
if (!registry.getListenerContainer(listenerId).isRunning()) {
registry.getListenerContainer(listenerId).start();
}
// 将其恢复
registry.getListenerContainer(listenerId).resume();
log.info("{}: 恢复监听",listenerId);
}
/**
* KafkaListener暂停监听
*/
public void pause(String listenerId) {
if(StringUtils.isBlank(listenerId)){
return;
}
// 暂停监听
registry.getListenerContainer(listenerId).pause();
log.info("{}: 暂停监听",listenerId);
}
}
KafkaListenerEndpointRegistry这个类是一个监听器端点注册表,它用来创建监听器容器,同时管理监听器容器的生命周期。