2014-06-25 55 views
0

我有一個rabbitMQ配置,其中需要有兩個單獨的偵聽器容器,每個容器都有一組偵聽器。下面是從的RabbitMQ-context.xml的一個片段:使用ids添加多個偵聽器容器似乎不起作用

<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> 

如果這些指定沒有ID所有的聽衆都在初始化啓動。

如果我繼續併爲其中的一個指定一個id(我想在另一個bean中引用它),另一個偵聽器容器(不帶id)不會被初始化。

如果我將兩個這些偵聽器容器指定爲ids(並且不在任何地方引用這些id),那麼只有一個偵聽器容器的偵聽器被初始化。

任何人都可以幫助我瞭解是否存在配置問題或者這是RabbitMQ中的錯誤?

+0

請顯示,配置,這是一個問題。並指定您使用的是哪個版本的Spring AMQP。 –

+0

RabbitMQ版本是3.0.4。 配置非常簡單,只是我有2個偵聽器容器,如果我沒有指定id,它似乎可以工作。 –

+0

否我的意思是*春季AMQP *圖書館 –

回答

0

根據SO問題Adding multiple listeners which will listen to different RabbitMQ queue not working已修復此問題(https://jira.spring.io/browse/AMQP-332)。

因此,請顯示錯誤的配置並嘗試升級到最新的Spring AMQP版本。我們有類似的test-case。我剛剛從nexted <rabbit:listener>元素中刪除了id,並且ListenFromAutoDeleteQueueTests通過了。

請檢查Spring Jars的版本並嘗試使用最新版本。

+0

感謝您及時回覆Artem。 我的問題是關於多個監聽器_,而不是_multiple listener-containers_。請參閱問題正下方的xml片段。 –

+0

在答案中增加了更多信息 –

+0

我實際上沒有在配置中使用偵聽器的id(如果您在問題中引用了xml配置)。 Listener只是引用一個Listener bean(myQ1Listener/myQ2Listener)。 –

相關問題