Nous utilisons ThreadPoolExecutor dans notre consommation JMS et l'injecter dans un DefaultMessageListenerContainer. Je m'attends à ce que cela fonctionne des threads simultanés pour beaucoup de messages cependant nos logs montrent que l'identification de fil ne changera pas. Notre notation montre que pour le traitement différent des messages, l'identification de fil est toujours identique à 24.Spring ThreadPoolTaskExecutor ne fonctionne que un fil
Ceci est la configuration du ressort dans ce scénario:
<bean class="org.springframework.jms.listener.DefaultMessageListenerContainer"
p:connectionFactory-ref="cachedConnectionFactory"
p:destination-ref="formsCRRDestination"
p:messageListener-ref="formServicePojo"
p:concurrentConsumers="5"
p:idleTaskExecutionLimit="1"
p:maxConcurrentConsumers="25"
p:taskExecutor-ref="threadPoolExecutor"
destroy-method="doShutdown"
>
<bean id="threadPoolExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor" >
<property name="corePoolSize" value="1"/>
<property name="maxPoolSize" value="15"/>
<property name="keepAliveSeconds" value="30"/>
</bean>
Après ne pas injecter le haricot threadPoolExectuor dans le DefaultMessageListenerContainer, les messages sont maintenant en cours d'exécution dans différents threads.
C'est la configuration résultante:
<bean class="org.springframework.jms.listener.DefaultMessageListenerContainer"
p:connectionFactory-ref="cachedConnectionFactory"
p:destination-ref="formsCRRDestination"
p:messageListener-ref="formServicePojo"
p:concurrentConsumers="5"
p:idleTaskExecutionLimit="1"
p:maxConcurrentConsumers="25"
destroy-method="doShutdown"
>
J'ai essayé de lire la documentation et je ne comprends pas pourquoi cela se passe. Toute explication?
Je ne suis pas dans jms, mais avez-vous essayé d'envoyer plusieurs messages en même temps? Je suppose que le mécanisme ici est de démarrer un nouveau thread uniquement à la demande (c'est-à-dire qu'il n'y a pas de thread inactif et un nouveau message arrive). –
Oui, j'ai essayé d'envoyer plusieurs messages en même temps, seuls quelques messages sont longs à traiter. – Jeune