我的应用程序需要连接到RabbitMQ队列并使用其中的消息(仅1)。我还必须确保在消息消失后立即删除队列。我正在寻找一种方法来做到这一点,配置简单。那可能吗?如果是,怎么样?
我在考虑以下选项:
设置为true:
我相信这意味着自动删除也会设置为true(除非专门设置为false)。当最后一个消费者被取消时,队列将被删除'。但这究竟意味着什么呢?这是否意味着消息消失后会被删除?这也意味着它只能使用声明队列的连接来消费吗?
将过期参数设置为x秒:
这将是一种更清洁的方式来摧毁我相信的队列。但问题在于找到正确的价值。来自队列的消息可以在3秒内消耗 - 但也可能会花费一分钟或更长时间。在这种情况下,它将一直保持到期满 - 即使队列消耗得更早。
有更好的选择吗?
答案 0 :(得分:0)
RabbitMQ团队监控this mailing list,有时只回答StackOverflow上的问题。
我使用谷歌搜索site:rabbitmq.com queue delete
,第二次点击是这个文件:
https://www.rabbitmq.com/queues.html
在该文件中,“临时队列”部分说明如下:
自动删除队列将在其最后一个使用者被取消时被删除(例如,使用AMQP 0-9-1中的basic.cancel)或者已经消失(关闭通道或连接,或者与服务器的TCP连接丢失)。 / p>
这听起来和你需要的完全一样。一旦您的消费者读取并确认单个消息,它就会断开连接,RabbitMQ将删除该队列。
独占队列(也在该页面上记录)只允许从单个连接进行访问,因此如果您的发布者与您的消费者(听起来像)不同,那么这将不是一个选项。