05、SpringBoot 集成 RocketMQ

目录

  • SpringBoot集成RocketMQ
    • 消息发送三种方式
      • 1、同步消息
        • producer-springboot
          • 创建项目
          • 添加依赖
          • 配置文件
          • 同步消息发送代码
          • 启动类
          • Test类
        • comsumer-springboot
          • 创建项目
          • 添加依赖
          • 配置文件
          • 同步消息消费代码
      • 2、异步消息
        • 生产者
        • 消费者
      • 3、一次性消息
        • 生产者
        • 消费者
    • 消息消费两种方式
      • 1、集群模式
        • 生产者:
        • 消费者:
      • 2、广播模式
        • 生产者
        • 消费者
    • 顺序消息
      • 生产者
        • 问题:
      • 消费者:
    • 延迟消息
      • 生产者:
      • 消费者:
    • 消息过滤
      • 1、Tag标签过滤
        • 生产者:
        • 消费者:
      • 2、SQL92过滤
        • 生产者:
        • 消费者:
    • 消费状态

SpringBoot集成RocketMQ

消息发送三种方式

1、同步消息

producer-springboot
创建项目

也是创建一个maven项目,添加对应的依赖就是boot项目了

05、SpringBoot 集成 RocketMQ_第1张图片

05、SpringBoot 集成 RocketMQ_第2张图片

05、SpringBoot 集成 RocketMQ_第3张图片

添加依赖

05、SpringBoot 集成 RocketMQ_第4张图片

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.14.RELEASE</version>
        <relativePath/>
    </parent>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.apache.rocketmq</groupId>
            <artifactId>rocketmq-spring-boot-starter</artifactId>
            <version>2.0.4</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
配置文件

application.properties

05、SpringBoot 集成 RocketMQ_第5张图片

同步消息发送代码
启动类

05、SpringBoot 集成 RocketMQ_第6张图片

Test类

因为没有用web来启动,所以我们来写个测试类就可以了

05、SpringBoot 集成 RocketMQ_第7张图片

效果:已经成功发送消息到消息中间件

05、SpringBoot 集成 RocketMQ_第8张图片
05、SpringBoot 集成 RocketMQ_第9张图片

comsumer-springboot
创建项目

05、SpringBoot 集成 RocketMQ_第10张图片

05、SpringBoot 集成 RocketMQ_第11张图片

添加依赖

和生产者的依赖差不多

05、SpringBoot 集成 RocketMQ_第12张图片

配置文件

只需要nameserver地址就可以,知道去哪里消费

05、SpringBoot 集成 RocketMQ_第13张图片

同步消息消费代码

05、SpringBoot 集成 RocketMQ_第14张图片

2、异步消息

生产者

05、SpringBoot 集成 RocketMQ_第15张图片

消费者

消费者代码没变化,正常消费

05、SpringBoot 集成 RocketMQ_第16张图片

3、一次性消息

生产者

就是调用方法而已,没有什么区别
05、SpringBoot 集成 RocketMQ_第17张图片

消费者

都是同样的消费代码,不需要改变

05、SpringBoot 集成 RocketMQ_第18张图片

消息消费两种方式

1、集群模式

开两个消费启动

05、SpringBoot 集成 RocketMQ_第19张图片

05、SpringBoot 集成 RocketMQ_第20张图片

生产者:

05、SpringBoot 集成 RocketMQ_第21张图片

消费者:

集群模式的每个消费者,均衡分配消息进行消费

05、SpringBoot 集成 RocketMQ_第22张图片
均衡分配

05、SpringBoot 集成 RocketMQ_第23张图片

05、SpringBoot 集成 RocketMQ_第24张图片

2、广播模式

每个消费者都能消费到同样的所有消息

生产者

05、SpringBoot 集成 RocketMQ_第25张图片

消费者

05、SpringBoot 集成 RocketMQ_第26张图片

顺序消息

加点基础数据

05、SpringBoot 集成 RocketMQ_第27张图片

05、SpringBoot 集成 RocketMQ_第28张图片

生产者

05、SpringBoot 集成 RocketMQ_第29张图片

问题:

05、SpringBoot 集成 RocketMQ_第30张图片

解答:

执行rocketMQTemplate.sendOneWayOrderly()这个发送消息的方法的时候,才会调用到这个rocketMQTemplate.setMessageQueueSelector()这个setxxx方法。

05、SpringBoot 集成 RocketMQ_第31张图片

消费者:

注解上加个顺序消费的参数就可以了

05、SpringBoot 集成 RocketMQ_第32张图片

多个结果都是按顺序消费的====创建–付款–完成–推送

05、SpringBoot 集成 RocketMQ_第33张图片

延迟消息

生产者:

05、SpringBoot 集成 RocketMQ_第34张图片
05、SpringBoot 集成 RocketMQ_第35张图片
05、SpringBoot 集成 RocketMQ_第36张图片

消费者:

05、SpringBoot 集成 RocketMQ_第37张图片

如图:

第一次需要创建topic需要时间,所以假设延迟10秒,第一条消费的时间,因为要创建topic,所以会大于10秒,后面的其他消息就会稳定在10秒。

经自己测试,后面的其他延迟消息,会上下浮动1秒。

05、SpringBoot 集成 RocketMQ_第38张图片

消息转string的其他方法,试下有没有用,没有用

05、SpringBoot 集成 RocketMQ_第39张图片
05、SpringBoot 集成 RocketMQ_第40张图片

消息过滤

1、Tag标签过滤

生产者:

05、SpringBoot 集成 RocketMQ_第41张图片
05、SpringBoot 集成 RocketMQ_第42张图片

消费者:

05、SpringBoot 集成 RocketMQ_第43张图片

05、SpringBoot 集成 RocketMQ_第44张图片

2、SQL92过滤

生产者:

05、SpringBoot 集成 RocketMQ_第45张图片
05、SpringBoot 集成 RocketMQ_第46张图片

消费者:

05、SpringBoot 集成 RocketMQ_第47张图片

消费状态

05、SpringBoot 集成 RocketMQ_第48张图片

你可能感兴趣的:(RocketMQ,spring,boot,java-rocketmq,rocketmq)