В моем (ограниченном) опыте с rabbit-mq, если вы создаете нового слушателя для очереди, которая еще не существует, очередь создается автоматически. Я пытаюсь использовать проект Spring AMQP с rabbit-mq, чтобы настроить прослушиватель, и вместо этого получаю ошибку. Это мой xml config:
<rabbit:connection-factory id="rabbitConnectionFactory" host="172.16.45.1" username="test" password="password" />
<rabbit:listener-container connection-factory="rabbitConnectionFactory" >
<rabbit:listener ref="testQueueListener" queue-names="test" />
</rabbit:listener-container>
<bean id="testQueueListener" class="com.levelsbeyond.rabbit.TestQueueListener">
</bean>
Я получаю это в своих журналах RabbitMq:
=ERROR REPORT==== 3-May-2013::23:17:24 ===
connection <0.1652.0>, channel 1 - soft error:
{amqp_error,not_found,"no queue 'test' in vhost '/'",'queue.declare'}
И аналогичная ошибка AMQP:
2013-05-03 23:17:24,059 ERROR [org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer] (SimpleAsyncTaskExecutor-1) - 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.
Кажется, из трассировки стека создается очередь в "пассивном" режиме. Может ли кто-нибудь указать, как я буду создавать очередь, не используя пассивный режим, чтобы я не видел эту ошибку? Или я пропущу что-то еще?