本文主要是介绍RocketMQ 三种发消息的方式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
本文主要 使用 RocketMQ-Spring 封装提供的 RocketMQTemplate ,实现三种(同步、异步、oneway)发送消息的方式。Producer在进行消息发送时可以是阻塞的,也可以是非阻塞的。具体对应到发送方式一共有三种,分别是同步、异步和单向的(ONEWAY)
异步:
rocketMQTemplate.asyncSend(TOPIC, message, callback);
该方法是非阻塞的,发送结果将由一个回调函数callback进行回调。它与同步发送消息的区别是它在发送消息时多传递了一个SendCallback对象,该方法一调用立马返回,而不需要等待Broker的响应返回。消息发送成功或失败后将回调SendCallback对象的对应方法。
同步:
rocketMQTemplate.syncSend(TOPIC, message);
该方法底层调用的是 producer.send()方法,是阻塞的,producer 一定要等到Broker进行了响应后才会返回,才能继续往下执行。如果超时,或者失败了,会触发两次默认的重试。
oneway:
rocketMQTemplate.sendOneWay(TOPIC, message);它的发送是通过调用sendOneway()发送的。它的发送是单向的,即它不需要等待Broker的响应,只管发送即可,而不论发送成功与失败。通常应用于一些消息不是那么重要,可丢失的场景。
1、引入pom.xml 依赖
<!-- 实现对 RocketMQ 的自动化配置 --><dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-spring-boot-starter</artifactId><version>2.1.1</version></dependency>
2、应用配置文件 application.yaml
# rocketmq 配置项,对应 RocketMQProperties 配置类
rocketmq:name-server: 127.0.0.1:9876 # RocketMQ Namesrv# Producer 配置项producer:group: koala-dev-event-centre-group # 生产者分组send-
这篇关于RocketMQ 三种发消息的方式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!