Добавление нескольких контейнеров-слушателей с идентификаторами, похоже, не работает

У меня есть конфигурация rabbitMQ, в которой мне нужно иметь два отдельных контейнера-слушателя, каждый из которых имеет набор слушателей. Вот фрагмент из rabbitmq-context.xml:

<rabbit:listener-container
connection-factory="connectionFactory" message-converter="jsonMessageConverter" 
auto-startup="true" 
acknowledge="manual"
requeue-rejected="true"
concurrency="5"
task-executor="myTaskExecutor" >
       <rabbit:listener queues="Queue1" ref="myQ1Listener" method="onMessage"/>
</rabbit:listener-container>

<rabbit:listener-container
connection-factory="connectionFactory" message-converter="jsonMessageConverter" 
auto-startup="true" 
acknowledge="manual"
requeue-rejected="false"
concurrency="5"
task-executor="myTaskExecutor" >
       <rabbit:listener queues="Queu2" ref="myQ2Listener" method="onMessage"/>
</rabbit:listener-container>

Если они указаны без идентификатора, все слушатели запускаются при инициализации.

Если я продолжу и укажу идентификатор для одного из них (на который я хочу сослаться в другом компоненте), другой контейнер-слушатель (без идентификатора) не будет инициализирован.

Если я укажу идентификаторы с обоими этими контейнерами-слушателями (и нигде не буду ссылаться на эти идентификаторы), все равно инициализируются слушатели только из одного из контейнеров-слушателей.

Может ли кто-нибудь помочь мне понять, есть ли проблема с конфигурацией или это ошибка в RabbitMQ?


person Vidit Sinha    schedule 25.06.2014    source источник
comment
Покажите, пожалуйста, конфигурацию, в которой возникает ошибка. И укажите, какую версию Spring AMQP вы используете.   -  person Artem Bilan    schedule 25.06.2014
comment
Версия RabbitMQ - 3.0.4. Конфигурация довольно проста, просто у меня есть 2 контейнера-слушателя, которые, кажется, работают, если я не укажу идентификаторы.   -  person Vidit Sinha    schedule 25.06.2014
comment
Нет, я имел в виду библиотеку Spring AMQP   -  person Artem Bilan    schedule 25.06.2014
comment
Особенно версия spring-rabbit.jar   -  person Artem Bilan    schedule 25.06.2014
comment
Вот версии: spring-amqp-1.1.4.RELEASE.jar spring-rabbit-1.1.4.RELEASE.jar   -  person Vidit Sinha    schedule 30.06.2014
comment
Верно. Вот почему я предложил обновить: projects.spring.io/spring-amqp.   -  person Artem Bilan    schedule 30.06.2014


Ответы (1)


Эта проблема исправлена ​​(https://jira.spring.io/browse/AMQP-332) согласно вопросу SO Добавление нескольких слушателей, которые будут прослушивать разные очереди RabbitMQ, не работают.

Итак, покажите, пожалуйста, неправильную конфигурацию и попробуйте обновиться до последней версии Spring AMQP.

Фактически у нас есть похожие контрольный пример. Я только что удалил id из связанных <rabbit:listener> элементов, и ListenFromAutoDeleteQueueTests прошел.

Пожалуйста, проверьте версии Spring jar и попробуйте использовать самые свежие.

person Artem Bilan    schedule 25.06.2014
comment
Спасибо за оперативный ответ Артему. Мой вопрос не о нескольких слушателях, а о нескольких контейнерах-слушателях. Пожалуйста, посмотрите фрагмент xml под вопросом. - person Vidit Sinha; 25.06.2014
comment
К ответу добавлена ​​дополнительная информация - person Artem Bilan; 25.06.2014
comment
На самом деле я не использую идентификаторы со слушателями в моей конфигурации (если вы ссылаетесь на конфигурацию xml в вопросе). Listener просто ссылается на bean-компонент Listener (myQ1Listener / myQ2Listener). - person Vidit Sinha; 30.06.2014
comment
Вам следует выполнить обновление и сообщить нам, как обстоят дела с последней версией. - person Artem Bilan; 30.06.2014
comment
Как видно из проблемы, на которую указал вам Артем (AMQP-332), это было исправлено в версии 1.2.1. Текущая версия - 1.3.5. - person Gary Russell; 30.06.2014