当前位置: 代码迷 >> 综合 >> RocketMQ的消息类型
  详细解决方案

RocketMQ的消息类型

热度:24   发布时间:2024-02-21 22:40:49.0

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", "单向消息测试");}
}