I have a simple RabbitMQ test program randomly enqueuing messages, and another reading them, all using Spring-AMQP. If the consumer dies (for example killing a process without having a chance to close its connection or channel), any messages that it had not acknowledged appear to remain unacknowledged forever.
I have seen a number of references (for example this question) that say that the channel dies when it has no connections, and that remaining unack’d messages will be redelivered. That’s not the behaviour I see – instead I get a growing list of channels marked IDLE and a growing list of connections marked running but with no activity.
Is there some configuration required to notice that connections are dead once the process has been killed?
EDIT:
I was running the rabbitmq server inside a VirtualBox VM, which apparently doesn’t manage dead inbound connections correctly over NAT. This works just fine with the mq server running directly on the physical host.
Answering to close. This turns out not to be a real issue.
I was running the rabbitmq server inside a VirtualBox VM, which apparently doesn’t manage dead inbound connections correctly over NAT. This works just fine with the mq server running directly on the physical host.