Springboot Kafka-sdk接入

488 阅读2分钟

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)工厂初始化日志

image.png

2)数据日志

image.png

总结

Spring Kafka提供了一种简单而强大的方式来使用Apache Kafka。您可以在任何Spring应用程序中使用它,并快速有效地实现在系统之间交流的消息传递。通过使用Spring Kafka,您可以轻松地创建生产者和消费者,并以统一的方式处理消息。无论您是开发大型企业应用程序还是小型分布式系统,Spring Kafka都可以成为您的有力工具。希望本文能够为您提供有关Spring Kafka的所有基础知识和信息,以便在未来的项目中更好地使用它。