spring boot 动态添加监听kafka哪些Topic

代码

//设置kafka信息
@Bean("ackContainerFactory")
public ConcurrentKafkaListenerContainerFactory ackContainerFactory(ConsumerFactory consumerFactory){
	ConcurrentKafkaListenerContainerFactory factory = new ConcurrentKafkaListenerContainerFactory();
	factory.setConsumerFactory(consumerFactory);
	/*
	设置默认不监听kafka设置的
	(此功能是可以动态设置是否启动kafka监听,如果不需要可以
	设置为true,甚至不用写这个方法;动态监听方法见下放)
	*/
	factory.setAutoStartup(false);
	return factory;
}

public static final String KAFKA_LISTENER_ID = "KAFKA_ID";
//监听配置文件中的receiveTopics的值使用,分割
//会监听下方配置中的test、test1、test2;三个topic
@KafkaListener(id = KAFKA_LISTENER_ID,topics = {"#{'${receiveTopics}'.split(',')}"},containerFactory = "ackContainerFactory")
public void message(ConsumerRecord<String, String> record) {
	//获取topic
	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

其他步骤

  1. kafka服务自带zookeeper下载与启动
  2. Spring boot配置kafka服务
  3. kafka生产者发送消息成功回调
  4. kafka根据ip端口获取消息队列上的topic
  5. kafka动态设置监听哪些topic
  6. 动态启动关闭kafka监听、设置默认不监听kafka
  7. kafka设置:1只接受消息、不发送消息;2只发送消息不接受消息;3既接受消息也发送消息;4既不接收消息也不发送消息
  8. kafka会把历史数据都获取下来
  9. Spring boot kafka执行多次多次消费
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐