SpringBoot2 整合Kafka组件,应用案例和流程详解
一、搭建Kafka环境1、下载解压-- 下载wget http://mirror.bit.edu.cn/apache/kafka/2.2.0/kafka_2.11-2.2.0.tgz-- 解压tar -zxvf kafka_2.11-2.2.0.tgz-- 重命名mv kafka_2.11-2.2.0 kafka2.112、启动Kafka服务
-- 执行位置-- /usr/local/mysoft/kafka2.11bin/kafka-server-start.sh config/server.properties3、查看服务ps -aux |grep kafka4、开放地址端口-- 基础路径-- /usr/local/mysoft/kafka2.11/configvim server.properties-- 添加下面注释advertised.listeners=PLAINTEXT://192.168.72.130:9092二、Kafka基础概念1、基础描述
2、功能特点
3、消息功能
- 点对点模式
- 发布订阅模式
4、消息队列作用
- 程序解耦,生产者和消费者独立,各自异步执行;
- 消息数据进行持久化存储,直到被全部消费,规避了数据丢失风险;
- 流量削峰,使用消息队列承接访问压力,尽量避免程序雪崩 ;
- 降低进程间的耦合度,系统部分组件崩溃时,不会影响到整个系统;
- 保证消息顺序执行,解决特定场景业务需求 ;
5、专业术语简介
- Broker
- Producer
- Consumer
- Topic
- Consumer Group
- Partition
三、整合SpringBoot2框架1、案例结构
-
消息生产者 : kafka-producer-server
-
消息消费方 : kafka-consumer-server
2、基础依赖<!-- SpringBoot依赖 --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency><!-- kafka 依赖 --><dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId> <version>2.2.4.RELEASE</version></dependency>3、生产者配置spring: kafka: bootstrap-servers: 127.0.0.1:90924、消息生成@RestControllerpublic class ProducerWeb { @Resource private KafkaTemplate<String, String> kafkaTemplate; @RequestMapping("/send") public String sendMsg () { MsgLog msgLog = new MsgLog(1,"消息生成", 1,"消息日志",new Date()) ; String msg = JSON.toJSONString(msgLog) ; // 这里Topic如果不存在,会自动创建 kafkaTemplate.send("cicada-topic", msg); return msg ; }}5、消费者配置spring: kafka: bootstrap-servers: 127.0.0.1:9092 consumer: group-id: test-consumer-group6、消息消费@Componentpublic class ConsumerMsg { private static Logger LOGGER = LoggerFactory.getLogger(ConsumerMsg.class); @KafkaListener(topics = "cicada-topic") public void listenMsg (ConsumerRecord<?,String> record) { String value = record.value(); LOGGER.info("ConsumerMsg====>>"+value); }}四、消息流程分析1、生产者分析
- 写入方式
- 分区概念
2、消费者分析
- 消费图解
- 消费方式
五、源代码地址GitHub·地址https://github.com/cicadasmile/middle-ware-parentGitEE·地址https://gitee.com/cicadasmile/middle-ware-parent