delivery-limit和x-delivery-limit之间有什么区别?当我将x-delivery-limit设置为RabbitMQ队列参数时,我可以看到它限制了我的消息重新排队尝试,正如我所预料的那样,但在正式的RabbitMQ文档中,我看到了delivery-limit的用法。
delivery-limit
x-delivery-limit
r3i60tvu1#
两者都是有效设置。区别在于delivery-limit是一个策略,而x-delivery-limit是一个队列参数。同样的区别也适用于其他RabbitMQ设置,例如
dead-letter-exchange
x-dead-letter-exchange
queue-length
x-queue-length
队列参数以x-为前缀,也称为x-argument。x代表“extra”或“extended”,因为这些参数扩展了必需的队列设置。例如,必需的队列设置是durable和exclusive属性。x-arguments是可选的队列设置。x-arguments由客户端在声明队列时设置。也就是说,若要变更x-argument,您需要重新部署从属端,并重新宣告队列。对于现有的队列,不允许变更x-argument,而且会导致inequivalent arg error关闭通道。这就是策略派上用场的地方。它们具有以下优点:1.策略是动态应用的。一旦声明了队列,策略可以在运行时更改队列设置。请注意,不是所有的队列设置都可以由策略更改。例如,更改x-queue-type(例如,从classic队列到quorum队列)因为队列进程及其存储消息的方式在创建后就不能动态更改。但是,大多数队列设置(包括delivery-limit)都可以通过策略动态更改。1.策略可以应用于组队列(和交换组)。队列参数只能应用于单个队列。通常,在可能的情况下,使用策略而不是队列参数是一种好的做法,因为策略更灵活。更多信息请参见官方文档:https://www.rabbitmq.com/parameters.html#why-policies-exist
x-
x-argument
x
durable
exclusive
x-arguments
inequivalent arg error
x-queue-type
classic
quorum
qlzsbp2j2#
我相信delivery-limit只是x-delivery-limit头值名称您可以在RabbitMQ UI中找到队列参数RabbitMQ提供了一个blog post的屏幕截图(图9.仲裁队列参数),其中使用了仅适用于仲裁队列的x-delivery-limit标头(功能矩阵)UPD:与this screenshot一致,x-delivery-limit是队列功能的一部分,但是delivery-limit是应用于此队列的策略定义的一部分。有关详细资料,请查看this article。
2条答案
按热度按时间r3i60tvu1#
两者都是有效设置。
区别在于
delivery-limit
是一个策略,而x-delivery-limit
是一个队列参数。同样的区别也适用于其他RabbitMQ设置,例如
dead-letter-exchange
是策略,而x-dead-letter-exchange
是队列参数queue-length
是策略,而x-queue-length
是队列参数队列参数以
x-
为前缀,也称为x-argument
。x
代表“extra”或“extended”,因为这些参数扩展了必需的队列设置。例如,必需的队列设置是durable
和exclusive
属性。x-arguments
是可选的队列设置。x-arguments
由客户端在声明队列时设置。也就是说,若要变更
x-argument
,您需要重新部署从属端,并重新宣告队列。对于现有的队列,不允许变更x-argument
,而且会导致inequivalent arg error
关闭通道。这就是策略派上用场的地方。它们具有以下优点:
1.策略是动态应用的。一旦声明了队列,策略可以在运行时更改队列设置。请注意,不是所有的队列设置都可以由策略更改。例如,更改
x-queue-type
(例如,从classic
队列到quorum
队列)因为队列进程及其存储消息的方式在创建后就不能动态更改。但是,大多数队列设置(包括delivery-limit
)都可以通过策略动态更改。1.策略可以应用于组队列(和交换组)。队列参数只能应用于单个队列。
通常,在可能的情况下,使用策略而不是队列参数是一种好的做法,因为策略更灵活。
更多信息请参见官方文档:https://www.rabbitmq.com/parameters.html#why-policies-exist
qlzsbp2j2#
我相信
delivery-limit
只是x-delivery-limit
头值名称您可以在RabbitMQ UI中找到队列参数RabbitMQ提供了一个blog post的屏幕截图(图9.仲裁队列参数),其中使用了仅适用于仲裁队列的
x-delivery-limit
标头(功能矩阵)UPD:与this screenshot一致,
x-delivery-limit
是队列功能的一部分,但是delivery-limit
是应用于此队列的策略定义的一部分。有关详细资料,请查看this article。