首页 > 其他分享 >RabbitMQ 死信队列和延时队列

RabbitMQ 死信队列和延时队列

时间:2022-09-25 23:47:24浏览次数:56  
标签:Exchange 队列 RabbitMQ 死信 消息 设置 TTL

RabbitMQ 死信队列和延时队列

TTL(Time To Live)

  • 消息的TTL就是消息的存活时间
  • RabbitMQ中对队列、消息都可以设置TTL
    • 对队列设置TTL,就是队列没有消费者连着的保留时间;对消息设置TTL,超过了这个时间,消息就死了,称之为死信。
    • 如果队列设置了,消息也设置了,那么会取小的。所以一个消息如果被路由到不同的队列中,这个消息死亡的时间有可能不一样(不同的队列设置)。这里单讲单个消息的TTL,因为它才是实现延迟任务的关键。可以通过设置消息的expiration字段或者x-message-ttl属性来设置时间,两者是—样的效果。

死信队列

概念

  • 死信队列:DLX,dead-letter-exchange。利用DLX,当消息在一个队列中变成死信 (dead message) 之后,它能被重新publish到另一个Exchange,这个Exchange就是DLX。DLX同时也是一个正常的交换机,它们可以像普通的交换机一样使用。
  • 延迟队列:利用死信可以实现延迟队列。 比如设置队列有限期为60s,到期移动到另一个队列。比如订单30s,30s之后移动到另一个死信队列,我们可以监听另一个死信队列。

可以进入死信路由的情况

  • 被consumer拒收的消息,并且reject方法的参数里requeue是false(不会重新入队)

  • TTL过期的消息

  • 队列消息满了,排在前面的消息会被丢弃或进入死信路由

      死信Exchange其实就是普通的Exchange
    

队列设置好自己的Dead Letter Exchange,当此队列中的消息过期后会被转发到这个路由,被称为死信路由

标签:Exchange,队列,RabbitMQ,死信,消息,设置,TTL
From: https://www.cnblogs.com/malongfeistudy/p/16729411.html

相关文章

  • 吉特日化MES & RabbitMQ 的基本配置
     在吉特日化MES(日化配料系统)中涉及到大量的消息推送,其中针对设备数据的交互(读写)大量使用了RabbitMQ来进行消息通讯以及程序上的解耦,其中包含使用PDA扫码登......
  • [Oracle] LeetCode 253 Meeting Rooms II 优先队列
    Givenanarrayofmeetingtimeintervalsintervalswhereintervals[i]=[starti,endi],returntheminimumnumberofconferenceroomsrequired.Solution我们用......
  • RabbitMQ实战指南 pdf
    高清扫描版下载链接:https://pan.baidu.com/s/1ERIrrC_boqd79cdEbTRwQg点击这里获取提取码 ......
  • 阿里巴巴-《码出高效》-任务队列实际应用
    Java项目开发中处理一些复杂的计算任务时,很多时候不使用同步的处理方式,而是使用异步多线程的方式来进行处理,并且会使用到Java中的任务队列。本篇文章就来讲讲任务队列......
  • JS执行队列
    JS执行队列同步和异步同步前一个任务结束后再执行后一个任务,程序的执行顺序与任务的排列顺序是一致的、同步的。比如做饭的同步做法:我们要烧水煮饭,等水开了(10分......
  • 利用rabbitmq异步实现来提升程序处理性能
    近期交易系统出款交易量猛增,从skywalking监控平台查看程序调用链路(trace),发现在调用外部三方接口的方法会耗时将近一半。鉴于出款交易在业务上是异步处理的,所以,商定考虑将调......
  • 队列的模拟及环形队列思路
    定义队列是一个有序列表,可以用数组或是链表来实现。遵循先入先出的原则。即:先存入队列的数据,要先取出。后存入的要后取出模拟思路队列本身是有序列表,若使用数组的......
  • 简单的队列转发服务器
    废话不说先上代码#项目是转发服务器,针对新手fromtypingimportOptionalfromflaskimportFlask,requestimportredis,queue,time,requestsapp=Flask(__na......
  • BM42 用两个栈实现队列
    描述用两个栈来实现一个队列,使用n个元素来完成n次在队列尾部插入整数(push)和n次在队列头部删除整数(pop)的功能。队列中的元素为int类型。保证操作合法,即保证pop操......
  • MQ 消息队列时如何确保消息不丢失
    面试官在面试候选人时,如果发现候选人的简历中写了在项目中使用了MQ技术(如Kafka、RabbitMQ、RocketMQ),基本都会抛出一个问题:在使用MQ的时候,怎么确保消息100%不丢......