在我们的系统架构中,应用程序独立于实时事件检索其初始状态。为了实现这一目标,我们利用 RabbitMQ 独有的自动删除经典队列和服务器生成的名称,它完全满足我们的要求。 然而,RabbitMQ 正在推动向仲裁队列的转变,不幸的是,它不支持这些功能。 我们可以设计一种解决方法来生成唯一的队列名称,并使用 single-active-consumer 属性来模拟独占队列。然而,挑战仍然在于创建一个自动删除的队列,一旦主机连接关闭,该队列就会被删除。 任何有关此事的帮助或见解将不胜感激。
说实话,即使 RabbitMQ 开发人员也承认,在这种情况下最好使用经典队列,但从 3.13 开始,管理控制台会显示一个横幅,警告使用已弃用的功能,并且明确传达从下一个版本开始将不再有经典队列主要版本。
您可能想设置队列 ttl? x-过期
可以通过设置 x-expires 来设置给定队列的过期时间 参数queue.declare,或通过设置过期策略。这 控制队列在自动使用之前可以不使用的时间长度 已删除。未使用表示队列没有消费者,队列还没有 最近已重新声明(重新声明续订租约),以及 basic.get 至少在过期期限内未被调用。 例如,这可以用于 RPC 样式的回复队列,其中许多 可以创建永远不会被耗尽的队列。