Мы столкнулись с некоторыми проблемами с производительностью при обработке сообщений.Ниже вы найдете информацию о текущем и ожидаемом поведении, которое мы ищем, и если у вас есть предложения, это будет чрезвычайно полезно.
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 потока работают параллельно. Время выполнения заказа и порядок
Из рисунка мы предполагаем, что точки ниже.T1, T2, T6 начали работать параллельно.Т4 начался сразу после Т1, поэтому Т4 ждал Т1.Т8 стартовал сразу после Т4, поэтому Т8 ждал Т4.Время ожидания T8 (T1 + T4).
Итак, наша партия в целом занимает время T1 + T4 + T8.
Есть ли способ изменить это поведение (к 27-й минуте,все остальные потоки были свободны, но T4 / T8 их не использовал), поэтому свободные потоки можно использовать эффективно?