RocketMQ源码中,延时消息的实现机制是怎样的?
- 内容介绍
- 相关推荐
本文共计1814个文字,预计阅读时间需要8分钟。
使用场景:在电商平台购买商品时,若支付时未付款,平台会将相应库存减少,并在30分钟后自动关闭订单。如30分钟内未付款,订单将被自动关闭。
使用场景
当我们在电商平台购买一件物品,但是没有付款时,平台会把对应的库存减少,并在会在30分钟后关闭这个订单。如果30分钟内你没有付款,平台会自动关闭这个订单,此时对应的库存被释放出来。
我们怎么在订单创建30分钟后并且没有付款的情况下将这个订单关闭掉?
不断的扫描数据库吗?扫库的时间间隔怎么确定?间隔太长,关闭订单的时间点不精确,间隔太短,数据库的压力又太大?
此时我们就可以用到延时消息,订单没有支付发一个延时时间为30m的延时消息,30m过后系统就会收到这个消息,进而关闭订单
RocketMQ支持18个级别的延时,每个级别的延时时间如下。
本文共计1814个文字,预计阅读时间需要8分钟。
使用场景:在电商平台购买商品时,若支付时未付款,平台会将相应库存减少,并在30分钟后自动关闭订单。如30分钟内未付款,订单将被自动关闭。
使用场景
当我们在电商平台购买一件物品,但是没有付款时,平台会把对应的库存减少,并在会在30分钟后关闭这个订单。如果30分钟内你没有付款,平台会自动关闭这个订单,此时对应的库存被释放出来。
我们怎么在订单创建30分钟后并且没有付款的情况下将这个订单关闭掉?
不断的扫描数据库吗?扫库的时间间隔怎么确定?间隔太长,关闭订单的时间点不精确,间隔太短,数据库的压力又太大?
此时我们就可以用到延时消息,订单没有支付发一个延时时间为30m的延时消息,30m过后系统就会收到这个消息,进而关闭订单
RocketMQ支持18个级别的延时,每个级别的延时时间如下。

