JmsTemplate的 - 定义每个队列并发?(JmsTemplate - define conc

2019-09-27 11:45发布

到目前为止,我只能够找到在JMS连接工厂并发设置:

<jms:listener-container connection-factory="myConnectionFactory"
                    task-executor="myTaskExecutor"
                    destination-resolver="myDestinationResolver"
                    transaction-manager="myTransactionManager"
                    concurrency="10">

是否有可能配置的消费者数量的单个队列? 即是这样的:

    <jms:listener destination="playerStatsQueue" ref="playerStatsService"
        method="onMessage" concurrency="100" />

谢谢!〜

Answer 1:

不要使用命名空间,但一个抽象父DefaultMessageListenerContainer ,创造每一个听者的子实例。 这样,你可以调整你需要的所有属性。

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

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


文章来源: JmsTemplate - define concurrency per queue?