DefaultMessageListenerContainer concurrentConsumers和maxConcurrentConsumers的最大限制,用于处理过多消息

时间:2017-07-02 16:21:29

标签: concurrency parallel-processing cpu-usage spring-jms

我想使用Spring Queue同时收听来自DefaultMessageListenerContainer的消息(大量消息)。

<bean id="jmsContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
    <property name="connectionFactory" ref="connectionFactory"/>
    <property name="destinationName" ref="queue"/>
    <property name="messageListener" ref="myMessageListener"/>
    <property name ="concurrentConsumers" value ="10"/>
    <property name ="maxConcurrentConsumers" value ="10000"/>        
</bean> 

我从spring_Forum读到,在concurrentConsumers和maxConcurrentConsumers中可以指定最多5到10个concurrentConsumers。

问题1:

我想尽快读取太多邮件。

可以通过增加concurrentConsumers&amp; maxConcurrentConsumers 1万或更多?

问题2:

请以任何其他方式提出建议如果对于过多的消息不是有效的方法吗?

假设, 在系统中运行的Threads(等于maxConcurrentConsumers)将开始颠簸,因为它疯狂地在所有正在运行的进程(Threads)之间切换。

1 个答案:

答案 0 :(得分:0)

处理消息的最佳线程数取决于它们将要执行的实际工作,这是与JMS没有直接关系的一般主题,例如参见glitch.com

与JMS本身相关的可能优化首先是连接和会话缓存。见here。另一种方法是在你负担得起的情况下放弃持久性。