amqp/rabbitmq中的立即标志和强制标志之间有什么区别?

amqp/rabbitmq中的立即标志和强制标志之间有什么区别?,rabbitmq,amqp,reliable-message-delivery,Rabbitmq,Amqp,Reliable Message Delivery,我指的是rabbitmq AMQP-0.9的基本发布方法。 它为消息引用了两个标志:-1)立即,2)强制 强制性的 此标志指示服务器在无法发送消息时如何作出反应 路由到队列。如果设置了此标志,服务器将返回 带有返回方法的不可终止消息。如果此标志为零,则 服务器自动删除消息 服务器应该实现强制标志 立即:- 立即的 此标志告诉服务器,如果消息无法立即路由到队列使用者,该如何反应。如果设置了此标志,则 服务器将使用返回方法返回无法传递的消息。如果 此标志为零,服务器将对消息进行排队,但没有 保证它永

我指的是rabbitmq AMQP-0.9的基本发布方法。 它为消息引用了两个标志:-1)立即,2)强制

强制性的

此标志指示服务器在无法发送消息时如何作出反应 路由到队列。如果设置了此标志,服务器将返回 带有返回方法的不可终止消息。如果此标志为零,则 服务器自动删除消息

服务器应该实现强制标志

立即:-

立即的

此标志告诉服务器,如果消息无法立即路由到队列使用者,该如何反应。如果设置了此标志,则 服务器将使用返回方法返回无法传递的消息。如果 此标志为零,服务器将对消息进行排队,但没有 保证它永远不会被消耗掉

The server SHOULD implement the immediate flag.
两个旗子看起来一样,它们之间有什么区别?
此外,从rabbitmq服务器的角度来看,未传递和未路由消息之间有什么区别?

根据您提供的文档摘录:

强制要求: 发送到exchange的消息如果没有与目标(主要是队列,您需要进一步检查在exchange之间绑定的情况下会发生什么)匹配的绑定,则该消息将返回到发布服务器,以便发布服务器知道代理无法路由该消息

立即: 这里是进一步的一步,如果没有可用的消费者,则会通知发布者

因此,例如,如果您将消息发送到可以将其定向到队列的exchange,但队列上当前没有使用者:

  • 从强制的角度来看,一切正常(您的消息已被路由到队列。它没有“丢失”
  • 从即时的角度来看,这是不好的,因为在发布消息时没有消费者

根据您提供的文档摘录:

强制要求: 发送到exchange的消息如果没有与目标(主要是队列,您需要进一步检查在exchange之间绑定的情况下会发生什么)匹配的绑定,则该消息将返回到发布服务器,以便发布服务器知道代理无法路由该消息

立即: 这里是进一步的一步,如果没有可用的消费者,则会通知发布者

因此,例如,如果您将消息发送到可以将其定向到队列的exchange,但队列上当前没有使用者:

  • 从强制的角度来看,一切正常(您的消息已被路由到队列。它没有“丢失”
  • 从即时的角度来看,这是不好的,因为在发布消息时没有消费者