spring boot 动态添加监听kafka哪些Topic
代码
@Bean("ackContainerFactory")
public ConcurrentKafkaListenerContainerFactory ackContainerFactory(ConsumerFactory consumerFactory){
ConcurrentKafkaListenerContainerFactory factory = new ConcurrentKafkaListenerContainerFactory();
factory.setConsumerFactory(consumerFactory);
factory.setAutoStartup(false);
return factory;
}
public static final String KAFKA_LISTENER_ID = "KAFKA_ID";
@KafkaListener(id = KAFKA_LISTENER_ID,topics = {"#{'${receiveTopics}'.split(',')}"},containerFactory = "ackContainerFactory")
public void message(ConsumerRecord<String, String> record) {
String topic = record.topic();
String flieName = new String(record.key().getBytes("UTF-8"),"UTF-8");
String valueTopic = new String(record.value().getBytes("UTF-8"),"UTF-8");
…………处理操作
}
配置
receiveTopics: test,test1,test2
其他步骤
- kafka服务自带zookeeper下载与启动
- Spring boot配置kafka服务
- kafka生产者发送消息成功回调
- kafka根据ip端口获取消息队列上的topic
- kafka动态设置监听哪些topic
- 动态启动关闭kafka监听、设置默认不监听kafka
- kafka设置:1只接受消息、不发送消息;2只发送消息不接受消息;3既接受消息也发送消息;4既不接收消息也不发送消息
- kafka会把历史数据都获取下来
- Spring boot kafka执行多次多次消费