前言
经过前面几部分的教程,大家应该已经对RocketMQ有了一个全面的认识,建议仔细阅读前几章的内容,可以更好的理解这次的内容,接下来,我们通过代码来演示一下SpringBoot如何集成并使用RocketMQ发送消息
一、SpringBoot集成RocketMQ
集成很简单,只需要导入RocketMQ的starter包即可
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-spring-boot-starter</artifactId>
<version>2.2.1</version>
</dependency>
// 工具类方便打印信息
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.12</version>
</dependency>
在配置文件中配置相关参数
生产者
# 应用服务 WEB 访问端口
server:
port: 8088
rocketmq:
# 多个nameserver用分号隔开
name-server: 192.168.0.8:9876
#生产者
producer:
# 生产者组名
group: producer_group
# 异步发送消息的重试次数
retry-times-when-send-async-failed: 5
消费者:
# 应用服务 WEB 访问端口
server:
port: 8081
rocketmq:
# 多个nameserver用分号隔开
name-server: 192.168.0.8:9876
# 消费者
consumer:
# 组名
group: consumer_group
# 消息模式 集群模式
message-model: CLUSTERING
spring:
application:
name: consumer
二、发送普通消息
1.同步发送消息
同步消息是指消息发送方发出一条消息后,会在收到服务端返回响应之后才发下一条消息的通讯方式。
2.异步发送消息
异步消息是指发送方发出一条消息后,不等服务端返回响应,接着发送下一条消息的通讯方式。RocketMQ 异步发送,需要实现异步发送回调接口(SendCallback)。消息发送方在发送了一条消息后,不需要等待服务端响应即可发送第二条消息,发送方通过回调接口接收服务端响应,并处理响应结果。
3.单步发送消息
发送⽅只负责发送消息,不等待服务端返回响应且没有回调函数触发,即只发送请求不等待应答。
具体代码如下:
生产者:
import cn.hutool.core.date.DateUtil;
import org.apache.rocketmq.client.producer.SendCallback;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.springframework.messaging.support.MessageBuilder;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.Date;
@RestController
@RequestMapping("/rocketmq")
public class ProducerController {
@Resource
private RocketMQTemplate rocketMQTemplate;
/**
* 发送普通消息
* @return
*/
@RequestMapping("/testNormalMessage")
public String testNormalMessage() throws Exception{
//发送10条消息
for (int i = 1; i <= 10; i++) {
String msg = "这是第"+i+"个订单";
//普通同步消息
rocketMQTemplate.syncSend("TopicOrder",MessageBuilder.withPayload("同步消息