【问题标题】:RabbitMQ: how a Queue can be auto-deleted?RabbitMQ:如何自动删除队列?
【发布时间】:2025-10-09 05:50:02
【问题描述】:

我有 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,写下你的答案,我会标记的。
  • 别担心,我不太在乎积分 :) 希望我能帮上忙

标签: .net rabbitmq


【解决方案1】:

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

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

【讨论】: