我们在味精处理中面临一些性能故障。请在下面找到我们正在寻找的当前行为和预期行为,如果您有建议,它将非常有帮助。
Jms配置
<!-- JMS container for report generator -->
<bean id="jmsContainer"
class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="queueConnectionFactory" />
<!-- XML report generator -->
<property name="destinationName" value="queue" />
<property name="messageListener" ref="ourAppListener" />
<property name="destinationResolver" ref="jmsDestinationResolver"/>
<!-- Number of threads on these queues -->
<property name="concurrentConsumers" value="6"></property>
</bean>
<bean id="jmsDestinationResolver" class="org.springframework.jms.support.destination.JndiDestinationResolver"/>
Java Class= OurAppListener implements javax.jms.MessageListener(from webmethods jms jar)
行为=当我们向队列发送8个消息时,尽管创建了6个使用者,但只有3个线程并行运行。 Thread run timing and order
从图像中我们假设以下几点。 T1,T2,T6开始并行运行。 T4在T1之后立即开始,因此T4正在等待T1。 T8在T4之后立即开始,因此T8正在等待T4。 T8总等待时间(T1 + T4)。
所以我们的批处理总共需要T1 + T4 + T8时间才能完成。
有没有一种方法可以更改此行为(到第27分钟,所有其他线程都处于空闲状态,但T4 / T8仍未使用它们),以便可以有效地使用空闲线程?