我指的是rabbitmq AMQP-0.9 documentation用于basic_publish方法。 它引用了消息的两个标志: - 1)立即,2)强制性。
强制
该标志告诉服务器如果消息不能如何反应 路由到队列。如果设置了此标志,服务器将返回一个 带有Return方法的unroutable消息。如果此标志为零,则 服务器默默地丢弃消息。
服务器应该实现强制标志。
立即: -
即时
如果消息无法立即路由到队列使用者,则此标志告诉服务器如何做出反应。如果设置了此标志,则 服务器将使用Return方法返回无法传递的消息。如果 此标志为零,服务器将对消息进行排队,但是没有 保证它会被消耗掉。
The server SHOULD implement the immediate flag.
两个标志之间有什么区别,因为两个标志看起来都一样? 而且,从rabbitmq服务器的角度来看,未传递和未传递的消息有什么区别?
答案 0 :(得分:2)
根据您提供的文档摘录:
<强>强制强>: 发送到交换的消息没有与目标的匹配绑定(主要是队列,您需要进一步检查在交换之间绑定的情况下会发生什么)将返回给发布者,因此发布者将知道代理无法路由消息
<强>即时强>: 此处更进一步,如果消息中没有可用的消费者,则会通知发布者。
因此,例如,如果您向可以将其指向队列的交换机发送消息,但队列中当前没有消费者: