I'm using RabbitMQ and trying to refactor my current native implementation to using the Spring AMQP abstraction. Declaration of exchanges, queues and their binding using the Spring library is via the AMQPAdmin interface, but I'm having trouble in working out the best place for this.

I have a web application that uses Rabbit to produce messages. Shocker

But how and when to declaration of the exchanges/queues?

Do I deploy with the web application and do administration within constructors of producers and consumers?
Do I create a separate application for administration of the broker?

What is the current thinking or best practices here?