Wir haben eine Anwendung mit ungefähr 75 partitionierten Schritten, verteilt auf 100 Jobs. Unsere Konfiguration für den Outbound-Gateway ist:JmsOutboundGateway: Manuelles Starten und Stoppen
<int-jms:outbound-gateway
id="outbound-gateway_1"
auto-startup="true"
connection-factory="jmsConnectionFactory"
request-channel="jms.requests_1"
request-destination="jms.requestsQueue"
reply-channel="jms.reply_1"
reply-destination="jms.repliesQueue"
receive-timeout="${timeout}"
correlation-key="JMSCorrelationID" >
<int-jms:reply-listener receive-timeout="1000"/>
</int-jms:outbound-gateway>
Wenn Autostart = "true" sehen wir den replyListener Thread für jeden Ausgangs-Gateway. Um diesen zusätzlichen Lade- und Ressourcenverbrauch zu entfernen, wechseln wir zu autostart = "false" und fügen einen Schrittlistener für den partitionierten Schritt hinzu, der das Gateway in den beforeStep- und afterStep-Methoden startet und stoppt. Beim Serverstart sind die AntwortListener-Threads nicht wie erwartet vorhanden. Sie erscheinen während der Ausführung des Schritts, werden aber nach dem Aufruf nicht entfernt, um auf dem Outbound-Gateway zu stoppen (auch nach längerem Warten).
Wird zur Bereinigung des replyListener noch etwas benötigt?
Woher wissen Sie, dass diese Threads immer noch da sind? Und welche Version von Spring Integration verwenden Sie? Danke –