2017-07-02 43 views
0

我想使用Spring的DefaultMessageListenerContainer同时收听Queue中的消息(大量消息)。DefaultMessageListenerContainer concurrentConsumers和maxConcurrentConsumers处理太多消息的最大限制

<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> 

我从最多5至10 concurrentConsumers可以concurrentConsumers和maxConcurrentConsumers任意指定spring_Forum读取。 。

问题1:

我想尽可能快地读了太多的消息。

难道是通过增加concurrentConsumers & maxConcurrentConsumers到或不止于此?

问题2:

请提出任何其他的方式。如果它不是为邮件太多有效的方法?

假设, Threads(等于maxConcurrentConsumers)在系统中运行的是要,因为它疯狂上下文中的所有正在运行的进程(Threads)之间切换以开始抖动。

回答

0

处理消息的最佳线程数取决于他们要做的实际工作,这是一个与JMS没有直接关系的普通主题,请参阅here

与JMS本身相关的可能优化首先是连接和会话高速缓存。见this discussion。如果你能负担得起,另一种方法是持续下降。