RabbitMQ应用之推迟队列
场景举例:订单生单成功后,30分钟未支付自动取消
消息的ttl
- 队列设置:
- x-expires:队列ttl,当队列未使用(没有任何消费者、没有被重新公告、过期时间段内未调用过Basic.Get命令)时,会被删除。服务器重启后,持久化的队列过期时间会重新计算,x-expires单位为毫秒,不可设置为0
- x-message-ttl :队列中消息的ttl
- 发布消息设置:
- expiration:单条消息ttl(若x-message-ttl也设置,取最短的ttl)
- 消息抛出
- 消息过期后,抛出需要满足两个条件,1个是消息过期,1个实在队列头部
- 若消息已过期,并且不在头部,当消费者消费掉头部未过期的消息之后,过期的消息仍会被抛出,不会被消费者消费掉。
死信交换器DLX:dead letter exchange
- dlx和普通交换器并没有区别,可以绑定多个队列
- 队列公告的时候,可以设置死信参数
- x-dead-letter-exchange 指定队列的死信交换器
- x-dead-letter-routing-key 指定dlx的路由键,可与推迟队列的路由键不同
- 消息满足肯定的条件会进入死信路由
- 一个消息被Consumer拒收了,并且reject方法的参数里requeue是false。也就是说不会被再次放在队列里,被其余消费者使用。
- 消息过期
- 队列的长度限制满了。排在前面的消息会被丢弃或者者扔到死信路由上。
推迟队列的实现
image
- queue1作为推迟队列,用于存储消息等到过期后转到任务队列
- queue2作为任务队列,已经经过推迟的消息,在这里被消费
说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » RabbitMQ应用之推迟队列
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » RabbitMQ应用之推迟队列