如何在 XML 文件中配置 RabbitMQ 使 1) 侦听器从多个队列侦听 2) 2 个侦听器侦听同一个队列?
How to configure RabbitMQ in XML file to have 1) listener listening from multiple queues 2) 2 listeners listening to same queue?
我正在尝试了解 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"/>
这是正确的吗? "queues" 属性中的语法是否正确?此外,如果两个侦听器从同一个队列接收,则
<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"/>
这是正确的吗?? "ref" 属性总是引用 bean id???或者它可以指代豆名??
这有效吗 -
<rabbit:listener queues="springQueue1" ref="messageListener1, messageListener2"/>
请help.Thanks.
Is this correct? Is the syntax correct in "queues" attribute??
是的,没错;单个消费者从 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"/>
我正在尝试了解 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"/>
这是正确的吗? "queues" 属性中的语法是否正确?此外,如果两个侦听器从同一个队列接收,则
<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"/>
这是正确的吗?? "ref" 属性总是引用 bean id???或者它可以指代豆名?? 这有效吗 -
<rabbit:listener queues="springQueue1" ref="messageListener1, messageListener2"/>
请help.Thanks.
Is this correct? Is the syntax correct in "queues" attribute??
是的,没错;单个消费者从 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"/>