Apache RocketMQ 自诞生以来,因其架构简单、业务功能丰富、具备极强可扩展性等特点被众多企业开发者以及云厂商广泛采用。历经十余年的大规模场景打磨,RocketMQ 已经成为业内共识的金融级可靠业务消息首选方案,被广泛应用于互联网、大数据、移动互联网、物联网等领域的业务场景。
官方首页:RocketMQ · 官方网站 | RocketMQ
下载链接:https://dlcdn.apache.org/rocketmq/5.0.0/rocketmq-all-5.0.0-bin-release.zip
1.下载安装Apache RocketMQ
2.配置系统变量
(1)、ROCKETMQ_HOME 本地解压路径
(2)、NAMESRV_ADDR localhost:9876
3. 启动NameServer
powerShell 管理员身份运行,否则服务会出现闪退现象!!!
若出现以下提示则服务启动成功,可进行下一步操作
启动报错提示以下错误,请检查服务解压路径中是否包含空格,存在则需迁移修改文件路径
4. 启动Broker+Proxy
单节点则无需分开启动Broker和Proxy,原因官方文档已有说明
同样依照步骤三,在服务bin目录下启动mqbroker
5、可视化管理工具——RocketMQ Dashboard
下载zip包,本地解压使用编译工具执行!pathUrl:
6、测试中间件连通性
访问本地8080端口是否联通正常
7、在 pom.xml 文件中添加以下依赖引入Java依赖库
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-spring-boot-starter</artifactId>
<version>2.2.1</version>
</dependency>
8、application.properties 配置服务端口及mq连接
server.port=8081
rocketmq.name-server=127.0.0.1:9876
rocketmq.producer.group=test1
rocketmq.producer.send-message-timeout=3000
rocketmq.producer.compress-message-body-threshold=4096
rocketmq.producer.max-message-size=4194304
rocketmq.producer.retry-times-when-send-failed=3
rocketmq.producer.retry-next-server=true
rocketmq.producer.retry-times-when-send-async-failed=3
9、创建消息队列
10、消息队列生产者,部分推送代码如下:
@Autowired
private RocketMQTemplate rocketMQTemplate;
/**
* 发送普通消息
* convertAndSend(String destination, Object payload) 发送字符串比较方便
*/
@RequestMapping("/send")
public void send(){
rocketMQTemplate.convertAndSend("test1","test-message");
}
/**
* 发送同步消息
*/
@RequestMapping("/testSyncSend")
public void testSyncSend(){
//参数一:topic 如果想添加tag,可以使用"topic:tag"的写法
//参数二:消息内容
SendResult sendResult = rocketMQTemplate.syncSend("test1","同步消息测试");
System.out.println(sendResult);
}
/**
* 发送异步消息
*/
@RequestMapping("/testASyncSend")
public void testASyncSend(){
//参数一:topic 如果想添加tag,可以使用"topic:tag"的写法
//参数二:消息内容
//参数三:回调
rocketMQTemplate.asyncSend("test1", "异步消息测试", new SendCallback() {
@Override
public void onSuccess(SendResult sendResult) {
System.out.println(sendResult);
}
@Override
public void onException(Throwable throwable) {
System.out.println("消息发送异常");
throwable.printStackTrace();
}
});
}
/**
* 发送单向消息
*/
@RequestMapping("/testOneWay")
public void testOneWay(){
for (int i = 0; i <100000000 ; i++) {
//参数一:topic 如果想添加tag,可以使用"topic:tag"的写法
//参数二:消息内容
rocketMQTemplate.sendOneWay("test1","单向消息测试测试下"+i);
}
}
11、消费队列信息消费者
@Service
@RocketMQMessageListener(consumerGroup = "test1",topic = "test1")
public class RocketMQConsumerListener implements RocketMQListener<String> {
@Override
public void onMessage(String s) {
System.out.println("消费消息:"+s);
}
}
12、postmain 测试推送数据并消费 至此完成所有
测试用例已上传至gitee pathUrl:https://gitee.com/yang-zhaopeng06022021/rocket_demo.githttps://gitee.com/yang-zhaopeng06022021/rocket_demo.git