KafkaListener开启/关闭监听

237 阅读1分钟

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这个类是一个监听器端点注册表,它用来创建监听器容器,同时管理监听器容器的生命周期。