一个JMS队列的多个使用者

时间:2017-06-04 06:23:16

标签: java spring jms activemq

我是JMS的新手。我使用教程here

创建了基本的生产者 - 队列 - 消费者场景

这里我配置了一个生产者和一个消费者。如果我想添加多个消费者,那么它有可能吗? 我不想把它作为主题,以便"每一个"消费者会得到它。我想配置多个消费者,但只有一个"实际上会收到它。

有10个仆人的事。任何仆人都可以接受任务。但只有一个仆人。

两个选项 1)一个类的10个实例。 2)10个不同类的1个实例

是否可以实现上述两种选择中的任何一种?如果是的话怎么样?

目前,消费者配置如下

`          

<bean class="org.springframework.jms.listener.SimpleMessageListenerContainer">
    <property name="connectionFactory" ref="connectionFactory" />
    <property name="destinationName" value="myQueue" />
    <property name="messageListener" ref="messageReceiver" />
</bean>`

答案 对的,这是可能的;正如JB Nizet在下面的评论中所建议的那样。

1)选项1,即一个类的10个实例。

通过设置&#34; concurrentConsumers&#34;属性。将只有1个类的实例,但将有10个接收器线程使用相同的对象

<bean name="anotherListener" class="org.springframework.jms.listener.SimpleMessageListenerContainer"> <property name="connectionFactory" ref="connectionFactory" /> <property name="destinationName" value="myQueue" /> <property name="messageListener" ref="anotherMessageReceiver" />

2)选项2,即1 /多个不同类的实例

我创建了SimpleMessageListenerContainer的多个实例

<bean id="messageReceiver" class="com.consumption.JmsMessageReceiver"/> <bean id="anotherMessageReceiver" class="com.consumption.AnotherJmsMessageReceiver"/> <bean name="listener" class="org.springframework.jms.listener.SimpleMessageListenerContainer"> <property name="connectionFactory" ref="connectionFactory" /> <property name="destinationName" value="myQueue" /> <property name="messageListener" ref="messageReceiver" /> <property name="concurrentConsumers" value="2"></property> </bean> <bean name="anotherListener" class="org.springframework.jms.listener.SimpleMessageListenerContainer"> <property name="connectionFactory" ref="connectionFactory" /> <property name="destinationName" value="myQueue" /> <property name="messageListener" ref="anotherMessageReceiver" /> <property name="concurrentConsumers" value="2"></property> </bean>

我将调试放在onMessage方法中,并观察到创建了指定数量的线程。

0 个答案:

没有答案