我试图了解Spring RabbitMQ XML配置。到目前为止,我从未遇到过侦听器列表(订阅)到多个队列的xml配置。同样明智的是,我从未找到过代码,其中2个侦听器在同一个xml文件中订阅了相同的队列。在浏览完XSD文档后,在哪里找到了属性 - " queue-names"是逗号分隔的队列名称列表。所以,我相信xml配置也可以像 -
<rabbit:queue id="springQueue1" name="spring.queue1" auto-delete="true" durable="false"/>
<rabbit:queue id="springQueue2" name="spring.queue1" auto-delete="true" durable="false"/>
<rabbit:listener-container connection-factory="connectionFactory">
<rabbit:listener queues="springQueue1, springQueue2" ref="messageListener"/>
</rabbit:listener-container>
<bean id="messageListener" class="com.ndpar.spring.rabbitmq.MessageHandler"/>
这是对的吗?语法是否正确&#34;队列&#34;属性??此外,如果两个侦听器从同一队列接收,则
<rabbit:listener-container connection-factory="connectionFactory">
<rabbit:listener queues="springQueue1" ref="messageListener1"/>
<rabbit:listener queues="springQueue1" ref="messageListener2"/>
</rabbit:listener-container>
<bean id="messageListener1" class="com.ndpar.spring.rabbitmq.MessageHandler1"/>
<bean id="messageListener2" class="com.ndpar.spring.rabbitmq.MessageHandler2"/>
这是对的吗? &#34;参考&#34;属性总是指bean id ???或者它可以引用bean名称? 这是否有效 -
<rabbit:listener queues="springQueue1" ref="messageListener1, messageListener2"/>
请帮忙。谢谢。
答案 0 :(得分:2)
这是对的吗?语法是否正确&#34;队列&#34;属性??
是的,这是正确的;一个消费者从2个队列消费。
<rabbit:listener-container connection-factory="connectionFactory">
<rabbit:listener queues="springQueue1" ref="messageListener1"/>
<rabbit:listener queues="springQueue1" ref="messageListener2"/>
</rabbit:listener-container>
它在功能上与具有concurrency="2"
的单个侦听器相同 - 在这种情况下,容器将针对队列创建2个使用者。在您的情况下,我们将获得2个容器,每个容器有一个消费者。
ref
必须引用单个bean id
。对于普通<bean/>
s,name
是id
的同义词。
这是无效的:
<rabbit:listener queues="springQueue1" ref="messageListener1, messageListener2"/>