Hi,

I have an application that consumes messages from RabbitMQ. Here is the basic XML configuration:

<rabbit:admin connection-factory="connectionFactory" auto-startup="false" />

<rabbit:queue name="myproduct.xmlProcessingReplyQueue"/>
<rabbit:queue name="myproduct.xmlProcessingRequestQueue" />

When my application starts (with a freshly installed RabbitMQ) I get these exceptions:

Code:
2012-05-31 14:48:21,867 [SimpleAsyncTaskExecutor-1] DEBUG org.springframework.amqp.rabbit.listener.BlockingQueueConsumer Starting consumer Consumer: tag=[null], channel=null, acknowledgeMode=AUTO local queue size=0
2012-05-31 14:48:21,867 [SimpleAsyncTaskExecutor-3] DEBUG org.springframework.amqp.rabbit.listener.BlockingQueueConsumer Starting consumer Consumer: tag=[null], channel=null, acknowledgeMode=AUTO local queue size=0
2012-05-31 14:48:21,867 [SimpleAsyncTaskExecutor-2] DEBUG org.springframework.amqp.rabbit.listener.BlockingQueueConsumer Starting consumer Consumer: tag=[null], channel=null, acknowledgeMode=AUTO local queue size=0
2012-05-31 14:48:22,348 [SimpleAsyncTaskExecutor-1] DEBUG org.springframework.amqp.rabbit.connection.CachingConnectionFactory Creating cached Rabbit Channel from AMQChannel(amqp://guest@127.0.0.1:5672/,3)
2012-05-31 14:48:22,358 [SimpleAsyncTaskExecutor-3] DEBUG org.springframework.amqp.rabbit.connection.CachingConnectionFactory Creating cached Rabbit Channel from AMQChannel(amqp://guest@127.0.0.1:5672/,2)
2012-05-31 14:48:22,358 [SimpleAsyncTaskExecutor-2] DEBUG org.springframework.amqp.rabbit.connection.CachingConnectionFactory Creating cached Rabbit Channel from AMQChannel(amqp://guest@127.0.0.1:5672/,1)
2012-05-31 14:48:22,498 [SimpleAsyncTaskExecutor-2] DEBUG org.springframework.amqp.rabbit.connection.CachingConnectionFactory Detected closed channel on exception.  Re-initializing: null
2012-05-31 14:48:22,498 [SimpleAsyncTaskExecutor-3] DEBUG org.springframework.amqp.rabbit.connection.CachingConnectionFactory Detected closed channel on exception.  Re-initializing: null
2012-05-31 14:48:22,508 [SimpleAsyncTaskExecutor-2] WARN  org.springframework.amqp.rabbit.listener.BlockingQueueConsumer Reconnect failed; retries left=2
java.io.IOException
	at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:106)
	at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:102)
	at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:124)
	at com.rabbitmq.client.impl.ChannelN.queueDeclarePassive(ChannelN.java:755)
	at com.rabbitmq.client.impl.ChannelN.queueDeclarePassive(ChannelN.java:61)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)[:1.6.0_22]
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)[:1.6.0_22]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)[:1.6.0_22]
	at java.lang.reflect.Method.invoke(Unknown Source)[:1.6.0_22]
	at org.springframework.amqp.rabbit.connection.CachingConnectionFactory$CachedChannelInvocationHandler.invoke(CachingConnectionFactory.java:331)
	at $Proxy52.queueDeclarePassive(Unknown Source)
	at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.start(BlockingQueueConsumer.java:213)
	at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.run(SimpleMessageListenerContainer.java:516)
	at java.lang.Thread.run(Unknown Source)[:1.6.0_22]
And further down:


Code:
2012-05-31 14:48:37,760 [SimpleAsyncTaskExecutor-2] DEBUG org.springframework.amqp.rabbit.connection.CachingConnectionFactory Detected closed channel on exception.  Re-initializing: null
2012-05-31 14:48:37,760 [SimpleAsyncTaskExecutor-2] ERROR org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer Consumer received fatal exception on startup
org.springframework.amqp.rabbit.listener.FatalListenerStartupException: Cannot prepare queue for listener. Either the queue doesn't exist or the broker will not allow us to use it.
	at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.start(BlockingQueueConsumer.java:228)
	at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.run(SimpleMessageListenerContainer.java:516)
	at java.lang.Thread.run(Unknown Source)[:1.6.0_22]
I have a feeling that the queues are not detected because the <rabbit:admin> tag has auto-startup=false and so it doesn't create the queues. I'm not sure what to do about it though...

Anyone?