使用Quarkus/SmallRye Reactive Messaging连接多个Kafka集群的问题咨询
Quarkus SmallRye Reactive Messaging 对接多Kafka集群解决方案
完全可以实现多Kafka集群对接,无需合并集群也不需要调整业务逻辑,只需要将全局Kafka broker配置拆分到各个通道的独立配置中即可。
配置原理
SmallRye Reactive Messaging 允许为每个消费、生产通道单独指定所有Kafka相关配置,通道级配置的优先级高于全局kafka.bootstrap.servers配置,每个通道会独立创建隔离的消费者/生产者实例,分别连接对应集群,不会出现跨集群分散数据的问题。
配置示例
假设你的应用存在一个消费通道input-channel(对接集群A的待消费topic)、一个生产通道output-channel(对接集群B的待生产topic),yaml配置参考如下:
mp: messaging: # 消费通道配置(对接集群A) incoming: input-channel: connector: smallrye-kafka topic: 待消费topic名称 # 单独指定集群A的broker地址,覆盖全局配置 bootstrap: servers: cluster-a-broker1:9092,cluster-a-broker2:9092 # 该通道独有的其他Kafka配置(比如消费者组、认证配置等) group: id: 消费者组名 # 生产通道配置(对接集群B) outgoing: output-channel: connector: smallrye-kafka topic: 待生产topic名称 # 单独指定集群B的broker地址,覆盖全局配置 bootstrap: servers: cluster-b-broker1:9092,cluster-b-broker2:9092 # 该通道独有的其他Kafka配置(比如acks、重试策略等) acks: all
注意事项
- 原有全局
kafka.bootstrap.servers配置可以保留,没有单独配置broker地址的通道会默认使用该全局配置 - 两个集群的安全配置(SASL、SSL等)、序列化/反序列化配置都可以单独放到对应通道的配置层级下,语法和全局Kafka配置完全一致
- 如需对接更多Kafka集群,只需为对应通道单独配置
bootstrap.servers即可,无集群数量限制
内容的提问来源于stack exchange,提问作者Triple S
相关产品推荐
相关产品推荐

