Java 连接到多个群集spring kafka

Java 连接到多个群集spring kafka,java,spring-kafka,Java,Spring Kafka,我想使用来自一个kafka群集的消息并发布到另一个kafka群集。想知道如何使用spring kafka进行配置吗?只需使用不同的引导服务器属性配置消费者工厂和生产者工厂即可 如果您使用的是Spring Boot,请参阅 及 如果您正在创建自己的工厂@Beans,请在那里设置属性 您可以使用spring cloud stream kafka活页夹 创建两个流,一个用于消费,一个用于生产 消费者 public interface InputStreamExample{ String I

我想使用来自一个kafka群集的消息并发布到另一个kafka群集。想知道如何使用spring kafka进行配置吗?

只需使用不同的
引导服务器属性配置消费者工厂和生产者工厂即可

如果您使用的是Spring Boot,请参阅

如果您正在创建自己的工厂
@Bean
s,请在那里设置属性


您可以使用spring cloud stream kafka活页夹

创建两个流,一个用于消费,一个用于生产

消费者

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*/);
现在使用绑定器配置消费者和生产者集群,您可以将消费者输入用于消费者集群,将生产输出用于生产集群

属性文件

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>

spring.cloud.stream.binders.kafka-a.environment.spring.cloud.stream.kafka.binder.brokers:
#此粘合剂的其他属性
#将kafka-a绑定到中的消费者
spring.cloud.stream.bindings.consumer in.binder=kafka-a#kafka-a绑定到中的消费者
#与中消费者的其他属性类似,如
spring.cloud.stream.bindings.consumer-in.destination=
spring.cloud.stream.bindings.consumer-in.group=
#现在配置集群以生成
spring.cloud.stream.binders.kafka-b.environment.spring.cloud.stream.kafka.binder.brokers:
spring.cloud.stream.bindings.product out.binder=kafka-b#这里是kafka-b,绑定到product out
#同样,您也可以进行其他配置,如主题
spring.cloud.stream.bindings.product-out.destination=

有关更多配置,请参阅此链接:

谢谢,我尝试了这种方法,效果很好