1

我指的是rabbitmq AMQP-0.9文档的basic_publish 方法。它指的是消息的两个标志:- 1)立即,2)强制。

强制的

如果消息无法路由到队列,该标志告诉服务器如何反应。如果设置了此标志,则服务器将使用 Return 方法返回不可路由的消息。如果此标志为零,则服务器静默丢弃该消息。

服务器应该实现强制标志。

对于立即:-

即时

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

The server SHOULD implement the immediate flag.

两个标志之间有什么区别,因为两者看起来都一样?此外,从 rabbitmq 服务器的角度来看,未传递和未路由的消息有什么区别?

4

1 回答 1

3

根据您提供的文档摘录:

强制:发送到交换而没有匹配到目标绑定的消息(主要是队列,您需要进一步检查交换之间的绑定情况会发生什么)将返回给发布者,因此发布者将知道代理无法路由消息

immediate:这里更进一步,如果消息没有可用的消费者,则通知发布者。

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

  • 从强制性的角度来看,一切都很好(您的消息已被路由到队列。它没有“丢失”
  • 从直接的角度来看,这是不行的,因为在发布时没有消息的消费者。
于 2018-04-13T21:18:52.787 回答