1.下载rocketmq
下载地址:https://rocketmq.apache.org/
2.配置rocktmq环境
path下配置【ROCKETMQ_HOME】,地址为你的安装地址
3.启动
在cmd窗口分别执行bin目录下的mqnamesrv.cmd和mqbroker.cmd,执行完之后会弹出新的窗口,都不要关闭,启动命令:start mqnamesrv.cmd,start mqbroker.cmd
ps:注意启动mqnamesrv.cmd,可能报找不到java的配置,那是因为java默认安装在c盘Program FIle下存在空格,需要把java环境换个没有空格的文件夹。直接把java的copy出来,放其他文件夹里面,然后配置环境修改下JAVA_HOME的地址。
4.整合springboot
pom里面加入
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>
yml的配置
spring:
application:
name: rocketmq-web
server:
port: 8091
rocketmq:
name-server: 127.0.0.1:9876
producer:
group: ${spring.application.name}
发送到mq
@Autowired
private RocketMQTemplate rocketMQTemplate;
@GetMapping("/tempSend")
public void comsume() {
//1.最简单 没有tag与key
// SendResult sendResult =rocketMQTemplate.convertAndSend("TopicTest", "你好,啊偶尔");
//2.添加tag key,message->org.springframework.messaging.Message;
// rocketMQTemplate.convertAndSend("TopicTest:Tag2", "我是多个tag");//tag 可以再topic后面:加
// Message message = MessageBuilder.withPayload("我是消息体").setHeader("KEYS", "2333").build();
// SendResult sendResult =rocketMQTemplate.send("TopicTest:Tag4", message);
//3.有返回的发送机制
SendResult sendResult = rocketMQTemplate.syncSend("TopicTest:Tag1", "Tag1报错回滚");
SendResult sendResult2 = rocketMQTemplate.syncSend("TopicTest:Tag1", "Tag1报错回滚2号");
if (sendResult.getSendStatus() == SendStatus.SEND_OK) {
log.info("成功");
}
//4.
// rocketMQTemplate.sendMessageInTransaction()
log.info("rocketmq发送消息成功");
}
消费mq
@Component
@RocketMQMessageListener(topic = "TopicTest", consumerGroup = "rocketmq-web", selectorExpression = "Tag1||Tag2")//设置只消费 Tag1根Tag2
@Slf4j
public class Consumer implements RocketMQListener<String> {
@Override
public void onMessage(String message) {
log.info("我收到消息了!消息内容为:" + message);
throw new RuntimeException("异常");//故意抛出错误-会自动不ack,继续消费
}
}
5.rocketmq可视化界面
git地址:https://github.com/apache/rocketmq-dashboard
直接拉下来启动就可以,如果修改默认的mq端口就需要跟着修改下配置