Move the declaration of queues, exchanges, and bindings into AmqpAdmin

Details

Description

This code is currently in the abstract @Configuration support class.

We should be able to follow the same approach in AmqpAdmin: it can implement SmartLifecycle with autoStartup set to true... and perhaps determined by a boolean flag (which should be 'true' by default), it will declare all Exchange, Queue, and Binding instances that it finds in the context.

This will only work for the case that all these components are being defined within the same virtual host (basically, they are declared on a Channel returned from a Connection returned from the AmqpAdmin ConnectionFactory, so that is the limitation). Using AmqpAdmin directly (and setting the boolean flag to false) is a perfectly valid option for those cases. We might want to explore some other ideas in the future (like nesting the resources within an outer tag that provides the connection-factory to use for that set).

Issue Links

supersedes

AMQP-30Add a boolean flag to SimpleMessageListenerContainer for declaring queues upon initialization