0

我想在 jms 模板中为单个队列配置消费者数量。我试图实现这个:JmsTemplate - 为每个队列定义并发?但在 ActiveMQQueue 中仍然显示 1. 我的消息传递上下文:

<bean id="parentContainer" abstract="true"
    class="org.springframework.jms.listener.DefaultMessageListenerContainer">
        <property name="connectionFactory" ref="connectionFactory" />
    </bean>

    <bean id="parentContainer" abstract="true"
    class="org.springframework.jms.listener.DefaultMessageListenerContainer">
        <property name="connectionFactory" ref="connectionFactory" />
    </bean>

    <bean id="playerStatsListener" parent="parentContainer">
        <property name="destination" ref="playerStatsQueue" />
        <property name="messageListener" ref="playerStatsService" />
        <property name="concurrency" value="100" />
    </bean>

    <!-- Listeners -->
    <bean id="playerStatsService" class="com.XXX.service.PlayerStatsService" />
    <!-- Destinations -->
        <bean id="playerStatsQueue" class="org.apache.activemq.command.ActiveMQQueue">
        <constructor-arg value="playerStatsQueue" />

另一个相关问题:“listener”与“messageListener”属性之间有区别吗?

4

1 回答 1

0

通常,您可以在DefaultMessageListenerContainerconcurrentConsumers上设置和。该设置将其作为一个方便的范围。maxConcurrentConsumersconcurrency

但根据文档

通过“lower-upper”字符串指定并发限制,例如“5-10”,或简单的上限字符串,例如“10”(在这种情况下,下限将为1)。

因此,如果您只说concurrency=100,它仍然等同于1-100,这可以解释为什么您会看到 1 个消费者。

于 2014-03-06T12:29:40.583 回答