spring boot 同时 连接 多个 kafka 代码实现
时间: 2023-07-31 14:09:20 浏览: 85
在 Spring Boot 中连接多个 Kafka 集群可以通过创建多个 KafkaTemplate 实例来实现。以下是示例代码:
```java
@Configuration
public class KafkaConfig {
@Value("${kafka.bootstrap.servers1}")
private String kafkaBootstrapServers1;
@Value("${kafka.bootstrap.servers2}")
private String kafkaBootstrapServers2;
@Bean
public KafkaTemplate<String, String> kafkaTemplate1() {
Map<String, Object> props = new HashMap<>();
props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, kafkaBootstrapServers1);
props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
return new KafkaTemplate<>(new DefaultKafkaProducerFactory<>(props));
}
@Bean
public KafkaTemplate<String, String> kafkaTemplate2() {
Map<String, Object> props = new HashMap<>();
props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, kafkaBootstrapServers2);
props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
return new KafkaTemplate<>(new DefaultKafkaProducerFactory<>(props));
}
}
```
在上面的示例中,我们创建了两个 KafkaTemplate 实例,分别连接两个不同的 Kafka 集群。使用时,只需要注入相应的 KafkaTemplate 实例即可。例如:
```java
@Autowired
private KafkaTemplate<String, String> kafkaTemplate1;
@Autowired
private KafkaTemplate<String, String> kafkaTemplate2;
public void sendMessageToKafka1(String topic, String message) {
kafkaTemplate1.send(topic, message);
}
public void sendMessageToKafka2(String topic, String message) {
kafkaTemplate2.send(topic, message);
}
```
在上面的示例中,我们分别定义了两个方法,用于向不同的 Kafka 集群发送消息。