RocketMQ的消息类型有以下三种:
- 普通消息
- 顺序消息
- 事务消息
下边分别介绍三种类型消息的使用场景,以及使用示例。
一、普通消息
对于普通消息,RocketMQ提供了三种发送方式:可靠同步发送、可靠异步发送和单向发送。
可靠同步发送
同步发送是指消息发送方发出数据后,会在收到接收方发回响应之后才会发送下一个数据包的通讯方式。
此种方式应用场景非常广泛,例如重要通知邮件、报名短信通知、营销短信系统等。
可靠异步发送
异步发送是指发送方发出数据后,不等接收方发回响应,接着发送下一个数据包的通讯方式。发送方通过回调接口接收服务器响应,并对响应结果进行处理。
单向发送
单向发送是指发送方只负责发送消息,不等待服务器回应,且没有回调函数触发。即只发送请求而不管响应。
适用于某些耗时非常短,但对可靠性要求并不高的场景,例如日志收集。
下面通过springboot单元测试进行普通消息的使用示例:
第一步:添加依赖
<!--单元测试--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId></dependency>
第二步:编写测试方法
package cn.jack.mq;import cn.jack.OrderApplication; import org.apache.rocketmq.client.producer.SendCallback; import org.apache.rocketmq.client.producer.SendResult; import org.apache.rocketmq.spring.core.RocketMQTemplate; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner;@RunWith(SpringRunner.class) @SpringBootTest(classes = OrderApplication.class) public class MessageTypeTest {@Autowiredprivate RocketMQTemplate rocketMQTemplate;// 同步消息@Testpublic void testSyncSend() {// 参数一:topic,如果想添加tag,可以使用"topic:tag"的写法// 参数二:消息内容SendResult result = this.rocketMQTemplate.syncSend("test-topic-1:test-tag", "同步消息测试");System.out.println(result);}// 异步发送@Testpublic void testAsyncSend() {this.rocketMQTemplate.asyncSend("test-topic-1", "异步消息测试", new SendCallback() {@Overridepublic void onSuccess(SendResult sendResult) {System.out.println(sendResult);}@Overridepublic void onException(Throwable throwable) {System.out.println("消息发送异常");throwable.printStackTrace();}});System.out.println("=============================");}// 单向消息@Testpublic void testOneWay() {this.rocketMQTemplate.sendOneWay("test-topic-1", "单向消息测试");} }