赞
踩
在上面两种场景中,如果我们使用下面3种传统解决方案无疑大大降低了系统的整体性能和吞吐量:
redis
给订单设置过期时间,最后通过判断 redis
中是否还有该订单来决定订单是否已经完成。这种解决方案相较于消息的延迟推送性能较低,因为我们知道 redis
都是存储于内存中,我们遇到恶意下单或者刷单的将会给内存带来巨大压力。jvm
原生的 DelayQueue
,也是大量占用内存,而且没有持久化策略,系统宕机或者重启都会丢失订单信息。在 RabbitMQ 3.6.x
之前我们一般采用死信队列+TTL过期时间来实现延迟队列。这里不做介绍。
在 RabbitMQ 3.6.x
开始,RabbitMQ
官方提供了延迟队列的插件rabbitmq-delayed-message-excha
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。