? ? ? ? ?项目终于开发完了,明天就开始联调了,总结下rocketma的使用场景和使用方法。
????????业务正常流程是这样的:用户下单 - 扣减库存 - 生成待支付订单 - 调用支付网关 - 支付成功后回调 - 修改订单数据 - 调发码平台购票,流程走完。
mq这里要做的是在生成待支付订单后将消息延迟10分钟放到mq,然后做一个异步监听,将监听到的数据去库里面查一遍有没有支付完成,如果没有支付完成就将订单取消,增加库存。
????????这么做的目的是防止有很多待支付的订单占用库存数量。
大致就业务就是这样,我这里用的是rocketmq-spring-boot-starter 2.1.1的版本
Producer:
/**
* destination: topic
* message: 消息内容
* sendCallback: 回调方法,可以用在做重试补偿机制
* timeout: 超时时间
* timeout: 延迟登记为18个:1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h
*/
rocketMQTemplate.asyncSend(String destination, Message<?> message, SendCallback sendCallback, long timeout, int delayLevel)
Consumer:主要是实现RocketMQListener接口的onMessage(T var1)方法
@Service
@RocketMQMessageListener(consumerGroup = "producer-name", topic = "topic-name")
public class OrderConsumerListener implements RocketMQListener<String> {
@Override
public void onMessage(String msg) {
log.info("延迟消费信息:::{}", msg);
//拿到业务数据,根据业务判断是否需要处理
}
}
????????大致就是这样 。
? ? ? ? 今天发现了一个调试接口的软件,自己感觉要比postman好用,功能还挺全面的,分享一下
名字:ApiPost,我已经在用了。也安利给公司的小伙伴使用了。具体有多好用我就不说了,自行体会吧!!!
下载地址:下载中心-ApiPost-中文版接口调试与文档管理工具
文档:首页 - APIPOST使用文档
?
|