zoukankan      html  css  js  c++  java
  • RabbitMQ笔记-死信队列与延时队列

    死信队列:

    DLX(Dead-Letter-Exchange),可以称为死信交换器。当消息在一个队列中变成死信(dead message)之后,它能被重新发送到另一个交换器中,这个交换器就是DLX,绑定DLX的队列就称为死信队列。

    消息变成死信队列有下面几个情况:

    • 消息被拒绝(channel.basicNack或channel.basicReject),并且设置requeue参数为false;
    • 消息过期;
    • 队列达到最大长度。

    延时队列

    延时队列存储的对象是对应的延迟消息,延迟消息指当消息被发送到队列后,并不立即被消费者拿到消息,而是等待特定的时间后,消费者才能拿到消息。
    延时队列需要安装一个插件,rabbitmq_delayed_message_exchange

    延时队列应用场景有:

    • 在订单系统中,用户下单后,通常有30分钟的付款时间。如果30分钟后没有付款,则订单被取消,这里可以使用延时队列处理订单。
    • 用户通过远程控制家里的智能设备在指定时间进行工作,可以将用户指定发送到延时队列,到达时间后再推送到智能设备。
    • 在RabbitMQ中,延时队列通过前面的DLX和TTL共同作用可以模拟出延迟队列功能。

    和死信队列消费者监听正常队列不同,延时队列中消费者监听的是死信队列。当消费在设置DLX和TTL后,发送到队列中经过指定时候后变成死信,死信重新发送到死信队列,而消费者监听到死信队列中有消息而进行消费,这样就达到了消息的延时。

  • 相关阅读:
    weka 文本分类(1)
    python 笔记1
    PAT乙级 1028. 人口普查(20)
    PAT乙级 1027. 打印沙漏(20)
    PAT乙级 1026. 程序运行时间(15)
    Eclipse常用快捷键
    MyBatis源码分析(各组件关系+底层原理
    springmvc异常处理
    Elasticsearch学习(一)————简单命令
    mybatis传入参数类型parameterType详解
  • 原文地址:https://www.cnblogs.com/fanfan-90/p/13380873.html
Copyright © 2011-2022 走看看