码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • springboot simple (8) springboot kafka


    1 kafka简介

    Apache Kafka是分布式发布 - 订阅消息系统。
    官网:http://kafka.apache.org
    下载地址:https://archive.apache.org/dist/kafka

    Kafka 的架构包括以下组件:
    1、生产者(Producer):发布消息;
    2、服务代理(Broker):已发布的消息保存在一组服务器中,它们被称为代理(Broker)或 Kafka 集群;
    3、消费者(Consumer):可以订阅一个或多个话题,并从 Broker接收的消息。
    在这里插入图片描述

    2 springboot集成kafka

    2.1 建立生产者producer的工程;

    第1步:POM文件引入:

    		<dependency>
    			<groupId>org.springframework.kafkagroupId>
    			<artifactId>spring-kafkaartifactId>
    			<version>2.9.2version>
    		dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    第2步:设置配置参数,修改application.properties文件:

    # kafka连接接地址
    spring.kafka.bootstrap-servers= localhost:9092
    # 生产者配置
    # 序列化key的类
    spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer 
    # 反序列化value的类
    spring.kafka.producer.value-serializer=org.springframework.kafka.support.serializer.JsonSerializer
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    第3步:定义ProducerService类,通过调用KafkaTemplate类来发送消息;

    @Service
    public class ProducerService {
        public static final String topic = "test";
    
        @Autowired
        private KafkaTemplate<?,String> kafkaTemplate;
    
        //向topic发送消息
        public void sendMessage(String message){
            JSONObject jsonObject = new JSONObject();
            jsonObject.put("data",message);
            kafkaTemplate.send(topic,jsonObject.toJSONString());
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    第4步:定义KafkaController类,通过http接口可以发送消息。

        @RequestMapping(value = "/sendMessage", method = RequestMethod.GET)
        public String sendMessage(@RequestParam(value = "message") String message) {
            producerService.sendMessage(message);
            return  message;
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2.2 建立生产者consumer的工程

    第1步:POM文件引入:

    		<dependency>
    			<groupId>org.springframework.kafkagroupId>
    			<artifactId>spring-kafkaartifactId>
    			<version>2.9.2version>
    		dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    第2步:设置配置参数,修改application.properties文件:

    # kafka连接接地址
    spring.kafka.bootstrap-servers=localhost:9092
    # 消费者所属消息组
    spring.kafka.consumer.group-id=testGroup 
    # 反序列化key的类
    spring.kafka.consumer.key-deserializer=org.apache.kafka.common.serialization.StringDeserializer 
    # 反序列化value的类
    spring.kafka.consumer.value-deserializer=org.apache.kafka.common.serialization.StringDeserializer
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    第3步:定义通过调用ConsumerService类,通过@KafkaListener来实现消息的监听。

    @Service
    @Slf4j
    public class ConsumerService {
        public static final String topic = "test";
    
        @Autowired
        private KafkaTemplate<?,String> kafkaTemplate;
    
        //从topic接收消息
        @KafkaListener(topics = "test", groupId = "testGroup", topicPartitions = {})
        public void receiveMessage(String message) {
            log.info("receive:" + message);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    2.3 生产者(producer)和消费者(consumer)通信

    验证如下:Postman发送http get请求:
    在这里插入图片描述

    生产者consumer的工程控制输入log:
    在这里插入图片描述

    可见:kafka服务启动成功,生产者(producer)消费者(consumer)通信正常。

    代码详见:
    https://gitee.com/linghufeixia/springboot-simple
    chapter6-2: 生产者(producer)项目
    chapter6-3: 消费者(consumer)项目


    教程列表:
    springboot simple(0) springboot简介
    springboot simple(1) springboot Helloworld
    springboot simple(2) springboot Starter
    springboot simple(3 )springboot Web开发
    springboot simple(4)springboot 数据持久化
    springboot simple (5) springboot Nosql
    springboot simple (6) springboot mqtt
    springboot simple (7) springboot thrift
    springboot simple (8) springboot kafka
    springboot simple (9) springboot jpa(Hibernate)
    springboot simple (10) springboot protobuf
    springboot simple (11) springboot protostuff
    springboot simple (12) springboot RabbitMQ

  • 相关阅读:
    Kafka存取原理与实现分析,打破面试难关
    C++核心编程--类篇
    java计算机毕业设计springboot+vue园区管理系统
    神经网络常用激活函数详解
    一文读懂:为什么GPU比CPU更快?
    谷歌成功利用一台 54 量子比特的量子计算机
    http协议各个版本的详细介绍
    【数据结构】红黑树的插入与验证
    【Vue】内置指令真的很常用!
    IDEA 不推荐使用 @Autowired 注解的原因
  • 原文地址:https://blog.csdn.net/afei8080/article/details/127749475
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号