I you want to control the life cycle of multiple consumers in the way you describe, one technique would be to use parent/child application contexts; the main (root) application would contain the bulk of your integration flow, it would start with a channel. Declare the inbound adapter in a separate application context and, when you create it, set the main context as the parent. This will give the child context access to the beans in the parent context, including the inbound channel, rabbit infrastructure, etc. The inbound contexts can then send messages into the main context.
Now, you can create/start/stop/destroy child contexts as you please, with each one having a separate listener container/consumer.
Gary P. Russell
Spring Integration Team
SpringSource, a division of VMware