RabbitMQ:如何自动删除队列?

Posted

技术标签:

【中文标题】RabbitMQ:如何自动删除队列?【英文标题】:RabbitMQ: how a Queue can be auto-deleted? 【发布时间】:2022-01-20 08:18:13 【问题描述】:

我有 N 个客户,每个客户都有自己的使用 fanout 交换的队列: 阙-1 阙2 ... 阙-N

Publishers 将消息发布到 fanout exchange,即 Publisher->pub msg->(to all Que-1 - Que-N)

每个客户都读取自己的队列 客户 i - 读取 -Que-i

问题是:

我该如何解决这个问题:如果在 K 分钟内没有客户阅读这个 Que-*,那么这个 Que 应该连同消息一起被删除。 IE。发布者可以发布消息,但如果没有客户阅读,则应该删除它。

【问题讨论】:

rabbitmq.com/queues.html#properties 这是您要找的东西吗? 但是我可以使用什么参数呢?即,如果在 K 分钟内没有客户阅读此队列,则应将其删除。 您可以创建一个服务来丢弃旧的 q 消息。之后 q 中的 auto-delete 参数应该可以完成这项工作。 好的,thanx @StPaulis,写下你的答案,我会标记的。 别担心,我不太在乎积分 :) 希望我能帮上忙 【参考方案1】:

参数 x-expires 满足我的需要:

Map<String, Object> args = new HashMap<String, Object>();
args.put("x-expires", 1800000);
channel.queueDeclare("myqueue", false, false, false, args);

【讨论】:

以上是关于RabbitMQ:如何自动删除队列?的主要内容,如果未能解决你的问题,请参考以下文章

216-rabbitmq详解

RabbitMq之应答模式

如何从RabbitMQ删除所有队列

RabbitMQ集群

RabbitMq 可视化详解

从 RabbitMQ 中删除所有队列?