1.RocketMQ的下载与配置
到官网选择想要的版本下载即可,Index of /release_notes
下载速度会比较慢,这里提供目前最新版本4.9.3的压缩包,rocketmq-all-4.9.3-bin-release.zip - 蓝奏云
压缩包选择路径解压即可
配置一个环境变量:ROCKETMQ_HOME,变量值为RocketMQ的安装路径,并把这个变量配置到path中,类似于JAVA_HOME
建议配置环境变量:NAMESRV_ADDR,变量值为127.0.0.1:9876。不配的话启动mqbroker之前需要cmd进入RocketMQ安装目录下的bin目录set一下这个变量
在bin目录下先后启动mqnamesrv和mqbroker
启动成功会分别有如下显示
2.整合
pom.xml中添加依赖,如下所示
<dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-spring-boot-starter</artifactId> <version>2.2.1</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <scope>compile</scope> </dependency>
配置application.yaml,具体如下
server: port: 80 rocketmq: name-server: localhost:9876 producer: group: group_1
编写controller层
package me.xiaomaju.controller; import me.xiaomaju.service.RocketMQService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/msg") public class RockerMQController { @Autowired private RocketMQService rocketMQService; @RequestMapping("{id}") public void sendMessage(@PathVariable String id){ rocketMQService.sendMessage(id); } }
编写service层,消息异步发送的逻辑
package me.xiaomaju.service.impl; import me.xiaomaju.service.RocketMQService; import org.apache.rocketmq.client.producer.SendCallback; import org.apache.rocketmq.client.producer.SendResult; import org.apache.rocketmq.spring.core.RocketMQTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class RocketMQImpl implements RocketMQService { @Autowired private RocketMQTemplate rocketMQTemplate; @Override public void sendMessage(String id) { System.out.println("已进入处理队列,id:" + id); rocketMQTemplate.asyncSend("id_user", id, new SendCallback() { @Override public void onSuccess(SendResult sendResult) { System.out.println("消息已成功发送:" + sendResult); } @Override public void onException(Throwable throwable) { System.out.println("消息发送异常,发送失败"); } }); } }
编写listener层,消息消费的逻辑
package me.xiaomaju.listener; import org.apache.rocketmq.spring.annotation.RocketMQMessageListener; import org.apache.rocketmq.spring.core.RocketMQListener; import org.springframework.stereotype.Component; @Component @RocketMQMessageListener(topic = "id_user",consumerGroup = "group_1") public class MsgListenter implements RocketMQListener<String> { @Override public void onMessage(String id) { System.out.println("消息已消费,id:"+id); } }
此时服务正常启动,浏览器输入 http://localhost/msg/xmj0001 回车
控制台打印如下
完毕