[英]Connecting to multiple clusters spring kafka
我想使用来自一个 kafka 集群的消息并发布到另一个 kafka 集群。 想知道如何使用 spring-kafka 进行配置?
只需使用不同的bootstrap.servers
属性配置消费者和生产者工厂。
如果您使用的是 Spring 引导,请参阅
和
如果您正在创建自己的工厂@Bean
,请在此处设置属性。
https://docs.spring.io/spring-kafka/docs/current/reference/html/#connecting
您可以使用 spring 云 stream 卡夫卡粘合剂。
创建两个 stream 一个用于消费,一个用于生产。
为消费者
public interface InputStreamExample{
String INPUT = "consumer-in";
@Input(INPUT)
MessageChannel readFromKafka();
}
对于生产者
public interface ProducerStreamExample{
String OUTPUT = "produce-out";
@Output(OUTPUT)
MessageChannel produceToKafka();
}
用于消费消息用途:
@StreamListener(value = ItemStream.INPUT)
public void processMessage(){
/*
code goes here
*/
}
用于生产
//here producerStreamExample is instance of ProducerStreamExample
producerStreamExample.produceToKafka().send(/*message goes here*/);
现在使用 binder 配置 consumer 和 producer 集群,您可以使用 consumer-in 用于 consumer 集群和 producer-out 用于 producer 集群。
属性文件
spring.cloud.stream.binders.kafka-a.environment.spring.cloud.stream.kafka.binder.brokers:<consumer cluster>
#other properties for this binders
#bind kafka-a to consumer-in
spring.cloud.stream.bindings.consumer-in.binder=kafka-a #kafka-a binding to consumer-in
#similary other properties of consumer-in, like
spring.cloud.stream.bindings.consumer-in.destination=<topic>
spring.cloud.stream.bindings.consumer-in.group=<consumer group>
#now configure cluster to produce
spring.cloud.stream.binders.kafka-b.environment.spring.cloud.stream.kafka.binder.brokers:<cluster where to produce>
spring.cloud.stream.bindings.produce-out.binder=kafka-b #here kafka-b, binding to produce-out
#similary you can do other configuration like topic
spring.cloud.stream.bindings.produce-out.destination=<topic>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.