又来问题了:
工作嘛,就是一个接一个的问题。
的数字化之路
格物致知 知行合一 记录开悟时的小欢喜 也希望能通过这种方式正向反馈社区
184篇原创内容
公众号
解决掉就好了。
盘它:
调了几次创建订单接口?
2次?
为什么两次?
是消费了两次MQ消息。
为什么是两次,是发了两次MQ消息吗?
一次。发了一次。
为什么发一次,但消费了两次?
有一次失败了。
这个【消费轨迹】功能太好使。消费两次的原因一目了然。
这可能就是传说中的“可观测性”的最佳实践吧。
有了这个方向,就好查了:报了什么错?
破案了。
因为第一次创建订单时,接口超时了。
然后重试。那么解决起来就简单了,在这个接口上以tid为维度加个分布式锁就可以了。
来梳理下RocketMQ的重试机制:
最大重试次数
默认值:16次。
最大限制:不超过1000次。
https://help.aliyun.com/zh/apsaramq-for-rocketmq/cloud-message-queue-rocketmq-5-x-series/developer-reference/consumption-retries