RabbitMQ延迟队列的使用方式
RabbitMQ实现延迟队列
Rabbit安装方式,以及对应延迟队列插件安装方式:见:Centos7 安装 RabbitMQ 教程
一、方式一
1.1 配置常量
public class DelayConstant { |
- 实体类
|
*
1.2 队列配置
|
1.3 生产者,消费者
|
1.4 缺陷
- 对于经典订单系统,用户在下单后30分钟未操作,系统将删除用户下的订单;
- 此时使用传统的定时任务扫描数据库并更改也可以完成,但并不能达到实时更新,且当数据量非常大的时候,是否损耗性能
- 使用rabbitmq的延迟队列,用户在下单后将订单数据放入延迟队列,并设置30分钟的延迟,到达时间后该操作放入死信队列
以上使用rabbitmq存在一个非常大的问题,加入第一个入队列的订单的延时为100s,第二个加入队列的订单的延时为10s,明显第二个加入队列的更先进入死信队列被消费
但rabbitmq的延迟队列必须按加入顺序出队列。显然是不合理的
二、方式二(推荐)
2.1 配置常量与队列配置
|
2.2 生成者与消费者
|
2.3 注意事项
- 使用第二种方式需要rabbitmq安装一个延迟队列插件
- 具体看延迟队列安装:rabbitmq_delayed_message_exchange插件
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 飞の博客!
评论










