第一步
在KafkaListener 指定id
@KafkaListener(id = ConsumerConst.LISTENER_ID_WARNING, topics = {"${kafka.app.topic.warning}"}, containerFactory = "ackContainerFactory", groupId = "warning")
第二步 通过KafkaListenerEndpointRegistry实现启动与停止接收数据
@Autowired
private KafkaListenerEndpointRegistry registry;
/**
* 开启监听.
* @param listenerId 监听ID
*/
@Override
public void startListener(String listenerId) {
//判断监听容器是否启动,未启动则将其启动
if (!registry.getListenerContainer(listenerId).isRunning()) {
registry.getListenerContainer(listenerId).start();
}
//项目启动的时候监听容器是未启动状态,而resume是恢复的意思不是启动的意思
registry.getListenerContainer(listenerId).resume();
}
/**
* 停止监听.
* @param listenerId 监听ID
*/
@Override
public void stopListener(String listenerId) {
registry.getListenerContainer(listenerId).stop();
}