• 消息的拒绝


    消息的拒绝

    Reject  Nack

      消息确认可以让 RabbitMQ知道消费者已经接受并处理完消息。但是如果消息本身或者消息的处理过程出现问题怎么办?需要一种机制,通知RabbitMQ,这个消息,我无法处理,请让别的消费者处理。这里就有两种机制,Reject和 Nack。

      Reject在拒绝消息时,可以使用 requeue标识,告诉 RabbitMQ 是否需要重新发送给别的消费者。不重新发送,一般这个消息就会被 RabbitMQ丢弃。Reject一次只能拒绝一条消息。

      Nack则可以一次性拒绝多个消息。这是 RabbitMQ对 AMQP规范的一个扩展。

        

      通过 RejectRequeuConsumer可以看到当 requeue参数设置为 true时,消息发生了重新投递。

    死信交换器 DLX

      RabbitMQ对 AMQP规范的一个扩展。被投递消息被拒绝后的一个可选行为,往往用在对问题消息的诊断上。

     

      消息变成死信一般是以下几种情况:

    • ·消息被拒绝,并且设置 requeue 参数为 false
    • ·消息过期
    • ·队列达到最大长度

      死信交换器仍然只是一个普通的交换器,创建时并没有特别要求和操作。在创建队列的时候,声明该交换器将用作保存被拒绝的消息即可,相关的参数是 x-dead-letter-exchange。

     

      

    和备用交换器的区别

      1、备用交换器是主交换器无法路由消息,那么消息将被路由到这个新的备用交换器,而死信交换器则是接收过期或者被拒绝的消息。

      2、备用交换器是在声明主交换器时发生联系,而死信交换器则声明队列时发生联系。

  • 相关阅读:
    Cheatsheet: 2010 05.25 ~ 05.31
    Cheatsheet: 2010 07.01 ~ 07.08
    Cheatsheet: 2010 07.22 ~ 07.31
    Cheatsheet: 2010 06.01 ~ 06.07
    Cheatsheet: 2010 05.11 ~ 05.17
    Cheatsheet: 2010 06.08 ~ 06.15
    Cheatsheet: 2010 06.16 ~ 06.22
    Cheatsheet: 2010 06.23 ~ 06.30
    2020.7.20第十五天
    2020.7.19第十四天
  • 原文地址:https://www.cnblogs.com/Soy-technology/p/11570224.html
Copyright © 2020-2023  润新知