我有一个简单的RabbitMQ测试程序随机排队消息,另一个读取它们,都使用Spring-AMQP . 如果消费者死亡(例如,在没有机会关闭其连接或通道的情况下终止进程),则任何未确认的消息似乎永远不会被确认 .
我已经看到一些引用(例如this question)表示通道在没有连接时死亡,并且剩下的不是我看到的行为 - 而是我得到了一个越来越多的标记为IDLE和不断增长的列表的通道连接标记为运行但没有活动 .
一旦进程被杀死,是否需要一些配置才能注意到连接已经死亡?
EDIT: 我在VirtualBox VM中运行rabbitmq服务器,显然无法通过NAT正确管理死入站连接 . 这对于直接在物理主机上运行的mq服务器来说效果很好 .
2 回答
AMQP使用队列和交换 . 您在交换机上发布并绑定队列以从交换机获取消息(您可以在我的博客上看到short explanation . 当您创建队列时,您可以将其设置为自动删除以及它在自动之前保持未使用的时间删除 . 这是RabbitMQ quickref的引用:
接近关闭 . 事实证明这不是一个真正的问题 .
我在VirtualBox VM中运行rabbitmq服务器,显然无法通过NAT正确管理死入站连接 . 这对于直接在物理主机上运行的mq服务器来说效果很好 .