本文介绍了JmsTemplate-定义每个队列的并发性?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

So far i've only been able to find concurrency setting in the jms connection factory:

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

是否可以为单个队列配置使用者数量?即类似:

Is it possible to configure the number of consumers for a single queue? i.e something like:

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

谢谢!〜

推荐答案

请勿使用名称空间,而应使用抽象父级DefaultMessageListenerContainer,并为每个侦听器创建一个子实例.这样,您可以调整所需的所有属性.

Do not use the namespace but an abstract parent DefaultMessageListenerContainer and create one child instance per listener. That way you can tweak all the properties you need.

<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-定义每个队列的并发性?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-11 23:55