在springboot中配置两个kafka环境
在工作中需要实了这么一个功能,把从正式环境kafka的数据消费出来,然后转发到测试环境kafka。
原理不复杂,只不过一般很少会配两个kafka环境。
特此记录下,以后说不定可以复用。
因为我们在配置文件里一般会有一个默认的kafka,这个配置我们不动,用来消费数据。
同时我们在配置一个测试环境kafka,命令需要区分下,比如叫kafka-test
server:
port: "${SERVER_PORT:8080}"
spring:
mvc:
pathmatch:
matching-strategy: ant_path_matcher
application:
name: {server-name}
kafka:
//...旧的kafka配置不变,下面新增一个kafka
kafka-test:
bootstrap-servers: "${KAFKA_SERVERS_TEST:kafka:9092}"
consumer:
group-id: kafka-forward
enable-auto-commit: true
key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
producer:
key-serializer: org.apache.kafka.common.serialization.StringSerializer
value-serializer: org.apache.kafka.common.serialization.StringSerializer
listener:
concurrency: "${KAFKA_CONCURRENCY:1}"
然后定义一个配置类,将测试环境kafka构建成bean对象,因为我们只需要发送消息,所以可以不配消费的参数
@EnableKafka @Configuration public class KafkaTestConfig { @Value("${spring.kafka-test.bootstrap-servers}") private String producerBootstrapServers; @Bean public Map<String, Object> producerConfigs() { Map<String, Object> props = new HashMap<>(); props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, producerBootstrapServers); props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class); props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class); return props; } @Bean public ProducerFactory<String, String> producerFactory() { return new DefaultKafkaProducerFactory<>(producerConfigs()); } /** * 自定义的测试环境kafka-template * * @return */ @Bean(name = "kafkaTemplateTest") public KafkaTemplate<String, String> kafkaTemplate() { return new KafkaTemplate<>(producerFactory()); } }
这个时候我们的环境中会有两个kafkaTemplate,所以引用的时候需要指定名称,如下
@Autowired @Qualifier("kafkaTemplateTest") private KafkaTemplate<String, String> kafkaTemplate;
这样就成功了!
一次性搞定,记录一下!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
2021-11-22 Django Admin管理后台详解15(转)--在Django Admin中过滤外联字段
2021-11-22 Django Admin管理后台详解14(转)--将字段标记为只读
2021-11-22 Django Admin管理后台详解13(转)--在列表视图页面上显示多对多或反向联接字段
2021-11-22 Django Admin管理后台详解12(转)--如何删除模型的“添加”和“删除”按钮
2021-11-22 Django Admin管理后台详解11(转)-覆盖后台模板
2021-11-22 Django Admin管理后台详解10(转)--更改下拉菜单中的ForeignKey显示文本
2021-11-22 Django Admin管理后台详解9(转)--获取特定对象的Django Admin后台URL