本文将从以下几个方面详细阐述如何使用KafkaTemplate配置发送两个Topic。
一、KafkaTemplate简介
KafkaTemplate是Spring Kafka提供的一个用于发送消息的工具类。通过使用KafkaTemplate,可以统一管理发送Kafka消息的操作,简化操作流程。
在KafkaTemplate中,需要配置一个ProducerFactory实例以及一个默认的Topic。当需要发送消息时,可以通过指定发送到的Topic,发送对应的消息。
二、配置发送两个Topic
在使用KafkaTemplate发送多个Topic时,需要针对每个Topic都配置对应的KafkaTemplate实例。
1. 添加依赖
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
<version>2.8.1</version>
</dependency>
2. 配置KafkaTemplate实例
在Spring配置文件中配置两个KafkaTemplate实例,分别用于发送不同的Topic。可以通过使用@Value注解,动态获取配置文件中的Topic名称。
@Configuration
public class KafkaTemplateConfig {
@Value("${kafka.topic1}")
private String topic1;
@Value("${kafka.topic2}")
private String topic2;
@Bean
public KafkaTemplate<String, String> kafkaTemplate1(ProducerFactory<String, String> producerFactory) {
return new KafkaTemplate<>(producerFactory, true);
}
@Bean
public KafkaTemplate<String, String> kafkaTemplate2(ProducerFactory<String, String> producerFactory) {
return new KafkaTemplate<>(producerFactory, true);
}
@Bean
public ProducerFactory<String, String> producerFactory() {
Map<String, Object> properties = new HashMap<>();
properties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
properties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
properties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
return new DefaultKafkaProducerFactory<>(properties);
}
}
3. 发送消息
通过定义KafkaTemplate实例,并指定发送消息的Topic,即可发送对应的消息。
@Service
public class KafkaProducerService {
@Autowired
private KafkaTemplate<String, String> kafkaTemplate1;
@Autowired
private KafkaTemplate<String, String> kafkaTemplate2;
public void sendMessage1(String message) {
kafkaTemplate1.send(topic1, message);
}
public void sendMessage2(String message) {
kafkaTemplate2.send(topic2, message);
}
}
三、总结
通过上述步骤,可以轻松配置发送多个Topic的KafkaTemplate实例,并发送对应的消息。需要注意的是,需要为每个Topic都配置对应的KafkaTemplate实例,并在发送消息时,指定发送的Topic。
原创文章,作者:ZKVOZ,如若转载,请注明出处:https://www.506064.com/n/373524.html
微信扫一扫
支付宝扫一扫