我有一个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>
如果指定没有id ,则所有侦听器都会在初始化时启动。
如果我继续并为其中一个指定一个id(我想在另一个bean中引用),则另一个listener-container(没有id)不会被初始化。
如果我用这两个侦听器容器指定id(并且不在任何地方引用这些id),则只初始化来自其中一个侦听器容器的侦听器。
任何人都可以帮我理解是否存在配置问题或者这是RabbitMQ中的错误吗?
答案 0 :(得分:0)
根据问题https://jira.spring.io/browse/AMQP-332已解决此问题(Adding multiple listeners which will listen to different RabbitMQ queue not working)。
所以,请显示错误的配置并尝试升级到最新的Spring AMQP版本。
我们有类似的test-case。我刚刚从被链接的id
元素中删除了<rabbit:listener>
,并且传递了ListenFromAutoDeleteQueueTests
。
请检查Spring jar的版本并尝试使用最新版本。