0

我的环境是 Spring 3.0.5,ActiveMQ 5.8。在servlet.xml我指定 10 个并发消费者。但是,ActiveMQ Web 管理控制台显示“消费者数量”= 20。

<bean id="singleConnectionFactory"
    class="org.springframework.jms.connection.SingleConnectionFactory">
    <property name="targetConnectionFactory" ref="connectionFactory" />
    <property name="reconnectOnException" value="true" />
</bean>

<bean id="msgListenerContainer"
    class="org.springframework.jms.listener.SimpleMessageListenerContainer">
    <property name="connectionFactory" ref="singleConnectionFactory" />
    <property name="destination" ref="emailRequestQ" />
    <property name="messageListener" ref="emailRequestMessageListener" />
    <property name="concurrentConsumers" value="10" />
</bean>

试图弄清楚我的配置是否缺少某些东西?在此处输入图像描述

4

1 回答 1

0

可能有几件事导致这种情况发生。例如,如果您实际上是在代码中使用构造函数而不是 @Autowiring 来实例化 bean,它将创建两个实例。

此外,如果您有更多的消费者,然后减少它们,那么当前消费者的数量可能不准确,因为它们可能只是闲置。

我建议切换到DefaultMessageListenerContainer. 这将允许您使用该maxConcurrentConsumers属性并从容器中访问一些额外的数据:

@Autowired
DefaultMessageListenerContainer container;
...
container.getActiveConsumerCount();
container.getConcurrentConsumers();
于 2013-05-02T22:58:44.547 回答