如何为单个队列配置并发

时间:2014-03-06 12:01:52

标签: java spring spring-jms jmstemplate

我想在jms模板中为单个队列配置使用者数量。我试图实现这个:JmsTemplate - define concurrency per queue?但是在ActiveMQQueue中,stiil显示为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" />

另一个相关问题:&#34;听众&#34;之间是否存在差异?到&#34; messageListener&#34;属性?

1 个答案:

答案 0 :(得分:0)

通常,您可以在DefaultMessageListenerContainer上设置concurrentConsumersmaxConcurrentConsumersconcurrency设置为此提供了便利范围。

但根据文档

  

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

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