RabbitMq:更改队列的x-message-ttl

cto*_*tor 4 rabbitmq

如何使用可配置的x-message-ttl实现队列?

我有一个x-message-ttl设置为1分钟的队列,我想在运行时将其更改为2分钟。如何做到这一点?

我已经尝试过使用x-message-ttl = 2分钟再次声明队列,但是此操作既不会更改ttl,也不会发布消息。

Gab*_*ele 5

如果使用参数创建队列,x-message-ttl则无法更改它,则必须删除并重新创建队列。

但是您可以使用以下策略:

  1. 创建不带 ttl参数的 队列
  2. 创建策略,例如:rabbitmqctl set_policy expiry ".*" "{""expires"":1800000}" --apply-to queues

这样,您可以更改队列TTL值

  • 所有队列都会改变......但是是否可以在特定队列中改变? (2认同)
  • 要仅为一个队列设置特定策略,您可以将正则表达式模式设置为您的队列名称(在 @Gabriele 示例中,它是正则表达式字符串“.*”)。因此,如果您的队列名为 Foo,您只需将正则表达式模式设置为“Foo”即可。有关具体信息的更多帮助,请参阅[此文档](https://www.rabbitmq.com/parameters.html)。 (2认同)
  • 有一件重要的事情要提。当为队列设置 ttl 时,它不会应用于已经进入队列的消息。它仅适用于创建策略后添加的新消息。 (2认同)