1. Start rabbitmq cluster: node1, node2
2. Kill node1(the spring amqp client is connected to this node)
3. org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer#restart was invoked, and the consumer was deleted from the SimpleMessageListenerContainer.
4. org.springframework.amqp.rabbit.connection.CachingConnectionFactory.CachedChannelInvocationHandler#physicalClose:1040 was invoked.
BUT the channel.isOpen() is false(as the pictures), so the com.rabbitmq.client.impl.recovery.AutorecoveringChannel#close() was NOT called.
5. com.rabbitmq.client.impl.recovery.AutorecoveringConnection#recoverConsumers was invoked
After the process above, the dead consumer was re-actived without the SimpleMessageListenerContainer.
Message was send to this consumer, but SimpleMessageListenerContainer can't consume it. So there was a message keeping in unacked until the client was restarted.