I wasn't involved with the original implementation but this looks like a day 1 bug to me; see the javadoc for `DefaultConsumer.handleConsumeOk`.

Previously, we only kept track of the last `consumerTag`. Doesn't hurt anything but it means that we only cancelled one of the consumers before closing the channel when stopping. Now we can issue `basicCancel` for each consumer. A single spring-amqp consumer is actually multiple Rabbit consumers.

I looked at modifying `handleCancel` (e.g. when a queue is deleted) individually but it would need major changes. So, we still recycle the consumer if we receive a cancel from rabbit, but the consumer will now recover (because of the new logic in `start()`).

Of course, people shouldn't be pulling the plug on active queues anyway.