• SpringBoot SpringBoot 开发实用篇 5 整合第三方技术 5.26 SpringBoot 整合 RocketMQ


    SpringBoot

    【黑马程序员SpringBoot2全套视频教程,springboot零基础到项目实战(spring boot2完整版)】

    SpringBoot 开发实用篇

    5 整合第三方技术

    5.26 SpringBoot 整合 RocketMQ
    5.26.1 整合 RocketMQ

    RocketMQ 也是满足AMQP 协议的

    但是

    在这里插入图片描述

    它默认支持的是RabbitMQ,即RocketMQ 它不是一个默认支持的东西

    查一下坐标 https://mvnrepository.com/search?q=rocketmq

    在这里插入图片描述

    在这里插入图片描述

    点进去

    在这里插入图片描述

    复制出来,贴到pom 文件中

    <dependency>
        <groupId>org.apache.rocketmqgroupId>
        <artifactId>rocketmq-spring-boot-starterartifactId>
        <version>2.2.2version>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    OK。

    先把上次做的RabbitMQ 的bean 全部注掉,不然起两套会冲突

    在这里插入图片描述

    这些都注掉

    【配置】

    rocketmq:
      name-server: localhost:9876
    
    • 1
    • 2

    在这里插入图片描述

    消息处理业务实现类

    package com.dingjiaxiong.service.impl.rocketmq;
    
    import com.dingjiaxiong.service.MessageService;
    import org.apache.rocketmq.spring.core.RocketMQTemplate;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    /**
     * ClassName: MessageServiceRocketmqImpl
     * date: 2022/10/23 12:49
     *
     * @author DingJiaxiong
     */
    
    @Service
    public class MessageServiceRocketmqImpl implements MessageService {
    
        @Autowired
        private RocketMQTemplate rocketMQTemplate;
    
        //发送消息
        @Override
        public void sendMessage(String id) {
    
            System.out.println("待发送短信的订单已纳入处理队列(rocketmq),id " + id);
            rocketMQTemplate.convertAndSend("order_id",id);
        }
    
        @Override
        public String doMessage() {
            return null;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    现在直接启动服务器,看看是否可以发送成功

    在这里插入图片描述

    可以看到,启动报错了【老师也报了】

    修改配置

    rocketmq:
      name-server: localhost:9876
      producer:
        group: group_rocketmq
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    再启动

    在这里插入图片描述

    OK

    直接生产一个消息进去

    在这里插入图片描述

    OK, 没啥问题

    【主动点击消费就不写了,直接监听】

    package com.dingjiaxiong.service.impl.rocketmq.listener;
    
    import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
    import org.apache.rocketmq.spring.core.RocketMQListener;
    import org.springframework.stereotype.Component;
    
    /**
     * ClassName: MessageListener
     * date: 2022/10/23 12:56
     *
     * @author DingJiaxiong
     */
    
    @Component
    @RocketMQMessageListener(topic = "order_id",consumerGroup = "group_rocketmq")
    public class MessageListener implements RocketMQListener<String> {
    
        @Override
        public void onMessage(String id) {
            System.out.println("已完成短信发送业务(rocketmq),id:" + id);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    重启服务

    在这里插入图片描述

    可以看到上来就把之前发那个没消费的消费了

    再生产几个

    在这里插入图片描述

    这就是完成了基本的生产消费队列操作

    问题来了, 现在我们发的这种消息都属于同步消息【对于程序,还是得做成异步】

    修改实现类

    package com.dingjiaxiong.service.impl.rocketmq;
    
    import com.dingjiaxiong.service.MessageService;
    import org.apache.rocketmq.client.producer.SendCallback;
    import org.apache.rocketmq.client.producer.SendResult;
    import org.apache.rocketmq.spring.core.RocketMQTemplate;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    /**
     * ClassName: MessageServiceRocketmqImpl
     * date: 2022/10/23 12:49
     *
     * @author DingJiaxiong
     */
    
    @Service
    public class MessageServiceRocketmqImpl implements MessageService {
    
        @Autowired
        private RocketMQTemplate rocketMQTemplate;
    
        //发送消息
        @Override
        public void sendMessage(String id) {
    
            System.out.println("待发送短信的订单已纳入处理队列(rocketmq),id " + id);
    //        rocketMQTemplate.convertAndSend("order_id",id);
            SendCallback callback = new SendCallback() {
                @Override
                public void onSuccess(SendResult sendResult) {
                    //成功的时候做什么
                    System.out.println("消息发送成功!");
                }
    
                @Override
                public void onException(Throwable throwable) {
                    //出现异常的时候做什么
                    System.out.println("消息发送失败");
                }
            };
            rocketMQTemplate.asyncSend("order_id",id,callback);
        }
    
        @Override
        public String doMessage() {
            return null;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49

    这就是发送异步消息,重启服务器看看

    生产一个消息

    在这里插入图片描述

    没啥问题【简单的整合就是这样,后面还得自己深入研究】

    回顾一下

    • 导入SpringBoot整合RocketMQ坐标

    在这里插入图片描述

    • 配置RocketMQ (采用默认配置)

    在这里插入图片描述

    • 生产消息

    在这里插入图片描述

    • 生产异步消息

    在这里插入图片描述

    • 使用消息监听器对消息队列监听

    在这里插入图片描述

    5.26.2 小结
    1. SpringBoot整合RocketMQ
  • 相关阅读:
    每日一练_3:字符串中找出连续最长的数字串 and 数组中出现次数超过一半的数字
    jmeter跨平台运行csv等文件
    华为机试真题 Python 实现【最大化控制资源成本】【2022.11 Q4 新题】
    Spring Boot 配置文件这样加密,才足够安全!
    11.数据公式中使用2个 $$ a =b $$,是什么意思?
    【云原生进阶之PaaS中间件】第一章Redis-2.3.3集群模式
    双馈风力发电机-900V直流混合储能并网系统Simulink仿真
    系统常用的命令
    css的表格属性以及边框属性
    java计算机毕业设计网上花店源码+系统+数据库+lw文档+mybatis+运行部署
  • 原文地址:https://blog.csdn.net/weixin_44226181/article/details/128010962