[TOC]
rocketMQ的demo主要模拟两个场景:
-
集成Spring-Cloud-Stream消息框架的消息生产和消费
rocketmq-produce
:消息生产者rocketmq-consume
:消息消费者
-
rocketMQ的事务消息,模拟场景:生成订单记录 -> MQ -> 增加积分
rocketmq-transactional
安装RocketMQ
修改rocketmq-produce
和rocketmq-consume
里namesrv-addr
的值为RocketMQ
的服务地址
运行rocketmq-consume
的RocketMqConsumeApplication
消费者有3个组
input:为字符串消息,消费所有消息
input2:为对象消息,只消费tag为
tagObj
的消息input3:为spring.messaging对象消息,消费所有消息
运行rocketmq-produce
的RocketMqProduceApplication
运行后会发送5条消息:2条字符串消息,3条对象消息(带tag)
修改rocketmq-transactional
里namesrv-addr
的值为RocketMQ
的服务地址
运行rocketmq-transactional
的RocketMqTxApplication
测试的场景主要有3个:
流程如下:
- 订单创建
- 发送mq消息
- 消费消息增加积分
http://localhost:11002/success
流程如下:
- 订单创建
- 发送mq消息 -> 失败
- 事务回查(等待1分钟左右)
- 发送mq消息
- 消费消息增加积分
http://localhost:11002/produceError
流程如下:
- 订单创建
- 发送mq消息
- 消费消息增加积分 -> 失败
- 重试消费消息 -> 失败
- 进入死信队列
- 消费死信队列的消息
- 记录日志并发出预警
http://localhost:11002/consumeError
注意:消费死信队列topic,必需把topic的perm改成6才能消费,默认是2