我有一个简单的 RabbitMQ 测试程序随机排列消息,另一个读取它们,全部使用 Spring-AMQP。如果消费者死亡(例如在没有机会关闭其连接或通道的情况下杀死一个进程),它没有确认的任何消息似乎永远保持未确认状态。
我看到许多参考资料(例如这个问题)说通道在没有连接时会死掉,并且剩余的未确认消息将被重新传递。这不是我看到的行为 - 相反,我得到越来越多的标记为 IDLE 的频道列表和越来越多的标记为正在运行但没有活动的连接列表。
是否需要一些配置来注意一旦进程被杀死,连接就死了?
编辑: 我在 VirtualBox VM 中运行 rabbitmq 服务器,它显然不能通过 NAT 正确管理死的入站连接。这适用于直接在物理主机上运行的 mq 服务器。