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




<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


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

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




和生产者的依赖差不多

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



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

就是调用方法而已,没有什么区别

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

开两个消费启动



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

均衡分配


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


加点基础数据




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

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

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





如图:
第一次需要创建topic需要时间,所以假设延迟10秒,第一条消费的时间,因为要创建topic,所以会大于10秒,后面的其他消息就会稳定在10秒。
经自己测试,后面的其他延迟消息,会上下浮动1秒。

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









