1、springboot集成kafka的监听配置
@KafkaListener(topics = "${spring.kafka-topic.consumer.company-info}", containerFactory = "kafkaFactory")
public void receive(String message) {
this.consume(message);
}
2、factory的配置
//当前的服务的环境
@Value("${spring.profiles.active}")
private String env;
// 开启kafka监听的环境列表,环境之前使用逗号隔开,例如 test1,test3
@Value("${kafka.startup.envs:''}")
private String startupEnvs;
@Bean("kafkaFactory")
ConcurrentKafkaListenerContainerFactory<Integer, String> kafkaFactory() {
ConcurrentKafkaListenerContainerFactory<Integer, String> factory = super.kafkaContainerFactory();
factory.setAutoStartup(isStartup());
LOGGER.info("kafkaFactory当前启动环境:{},启动监听kafka:{}", env, isStartup());
return factory;
}
// 判断当前环境是否要开启kafka监听
private boolean isStartup() {
// 过滤掉线上环境
if (StringUtils.isBlank(startupEnvs) || "prod".equals(env)) {
return true;
}
String[] envs = startupEnvs.split(",");
if (Arrays.asList(envs).contains(env)) {
return true;
}
return false;
}
3、apollo上的kafka启动的动态配置
kafka.startup.envs=test1,test2,dev
4、环境判断
在一些公司中,启动环境和打包环境不一致,可能存在所有的测试环境都是使用统一一个测试环境启动,比如:使用test1环境的配置打包,但是启动使用test,所有造成所有的测试环境的启动配置都是一个,为了区分开,可以在相应的配置文件中,加上环境配置,比如:在test1的配置文件中,添加 current.env=test1,然后通过 current.env来判断当前环境就可以了