Spring Kafka是基于Spring Framework的Apache Kafka的集成库,它提供了一种方便的方式来使用Apache Kafka的消息队列功能。它使用Spring的机制来管理Kafka的连接,自动配置生产者和消费者,并提供用于消息处理的API,以便在Spring应用程序中轻松使用Kafka。在本文中,我们将介绍Spring Kafka的基础知识、架构和核心组件。
1. 原理介绍
重写spring-kafka中的两个关键的bean对象,ProducerFactory(kafka生产者工厂对象)和KafkaListenerContainerFactory(kafka消费者工厂对象),从而实现个性化配置;使用者无需关注具体配置,只要在配置文件中开启sdk的使用即可
2. 接入流程
1)POM文件引入SDK
<dependency>
<groupId>com.tyjt</groupId>
<artifactId>ccp-toolkit-mq</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
2) application.yml配置文件
kafka:
producer:
used: true
consumer:
used: true
3)bootstrap.yml配置文件
spring:
cloud:
nacos:
username: nacos
password: nacos
config:
server-addr: 172.26.1.247:8848
namespace: 1d46279c-0cea-42bf-a976-cd31f8170ef2
file-extension: yml
name: ccp-mq
4)代码示例
参考 ccp-toolkit-example/ccp-toolkit-mq-example
生产者示例代码ProducerService.java
@Service
@Slf4j
public class ProducerService {
@Resource
private KafkaTemplate<String, Object> kafkaTemplate;
@Scheduled(fixedRate = 10 * 1000)
public void sendMsg() {
log.info("开始发送消息 kafka");
ListenableFuture<SendResult<String, Object>> future = kafkaTemplate.send("tyjt-test",
"data", "kafka_message_" + System.currentTimeMillis() / 1000);
future.addCallback(new ListenableFutureCallback<>() {
@Override
public void onFailure(Throwable ex) {
log.error("发送消息 kafka 失败", ex);
}
@Override
public void onSuccess(SendResult<String, Object> result) {
log.info("发送消息 kafka 成功");
}
});
}
}
消费者示例代码ConsumerService.java
@Service
@Slf4j
public class ConsumerService {
@KafkaListener(topics = "tyjt-test", groupId = "lushijie")
public void listen(List<ConsumerRecord<String, Object>> recordList) {
recordList.forEach(data ->
log.info("获取kafka数据,topic:{},data:{},分区:{},偏移量:{}", data.topic(), data.value(),
data.partition(), data.offset()));
}
}
3. 验证方式
1)工厂初始化日志
2)数据日志
总结
Spring Kafka提供了一种简单而强大的方式来使用Apache Kafka。您可以在任何Spring应用程序中使用它,并快速有效地实现在系统之间交流的消息传递。通过使用Spring Kafka,您可以轻松地创建生产者和消费者,并以统一的方式处理消息。无论您是开发大型企业应用程序还是小型分布式系统,Spring Kafka都可以成为您的有力工具。希望本文能够为您提供有关Spring Kafka的所有基础知识和信息,以便在未来的项目中更好地使用它。