【发布时间】:2016-12-15 19:28:30
【问题描述】:
我们有一个包含大约 75 个分区步骤的应用程序,分布在大约 100 个作业中。我们对出站网关的配置是:
<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>
当 autostart="true" 时,我们会看到每个出站网关的 replyListener 线程。为了消除这种额外的负载和资源消耗,我们更改为 autostart="false" 并为分区步骤添加了一个步骤侦听器,即在 beforeStep 和 afterStep 方法中启动和停止网关。在服务器启动时,replyListener 线程并不像预期的那样存在。它们在步骤执行期间出现,但在出站网关上停止调用后不会被删除(即使在等待很长时间后)。
清理replyListener 是否需要其他东西?
【问题讨论】:
-
你怎么知道那些线程还在?您使用哪个版本的 Spring Integration?谢谢
标签: spring-integration spring-batch spring-jms