【发布时间】:2018-09-25 19:19:25
【问题描述】:
我们在 RabbitMQ 中有一个备份队列,它只是保留旧消息的副本以供人类使用。此队列中没有消费者,查看消息的唯一方法是使用 Get Messages UI/API。
问题是其中一位用户尝试在启用重新队列的情况下获取超过 24k 条消息,并且队列进入了错误状态。
目前我看到有 24k 未确认消息,但队列中没有任何消费者。
此时我要做的就是清除队列以删除旧消息,但我无法清除未确认的消息。而且由于没有消费者,我不知道我可以关闭任何连接,这会将消息移回就绪状态。
我可以执行任何管理员操作来清空此队列的内容吗? 如果没有,此时我可以做些什么来将消息移回就绪状态?
编辑:关于这个主题的其他类似问题都有消费者,而我没有,所以他们的解决方案不适用于我。因此,我为什么要将此作为一个新问题来创建。
谢谢
【问题讨论】:
-
澄清一下——所有这些未确认的消息都是由于被传递到 Web 客户端而最终出现的?
-
另外,一般来说,这不是 RabbitMQ 的有效用例。如果您想查看消息,请通过将它们保存到数据库来排空此队列,然后可以随意导航。
-
嗨@theMayer,是的,没错,我们有两个队列(称它们为 q1 和 q1bkp)。我们向两者发送相同的消息,但 q1 有一个消费者接收消息并对其进行操作,而 q1bkp 没有消费者,因此人们可以手动查看数据。您关于数据库的观点是正确的,谢谢。我们只是没有这个,因为我们正在为客户开发一些软件,并且需要一种快速且简单的方式来检查我们的集成消息,而无需花费可计费的时间来建立基于数据库的工具。