我正在通过生产者向RabbitMQ发送一条普通消息,然后发送第二条消息,并将expiration属性分配给一个值。然后,使用rabbitmqctl list_queues命令监视消息的状态。

我发现,如果我先发送一条普通消息,然后再发送一 strip 有expiration的消息,则rabbitmqctl list_queues总是向我显示2条等待队列中的消息。当我食用它们时,我只会得到一个。

另一方面,如果我只发送了一 strip 有expiration的消息,则一开始我会看到该消息,然后在正确的到期时间之后,我发现它已被删除。

我的问题是,第一种情况实际上是消息占用空间吗?还是界面错误?

我的rabbitMQ版本是:rabbitmq-server.noarch -> 3.1.5-1.el6

最佳答案

您似乎错过了有关此功能的一些文档。如果您阅读RabbitMQ documentation on per-message TTL (expiration),则将针对您所看到的确切行为注意到以下警告(添加了强调):

10-08 16:11