默认taskScheduler Bean - Spring集成2.2.0 Vs 3.0.2与Spring 3.2.9

时间:2014-11-03 21:20:56

标签: spring spring-integration

我有一个独立的应用程序,它使用文件入站通道适配器以特定间隔从指定位置轮询文件。 我没有定义taskScheduler实例。 当使用Spring集成2.2.0和3.0.2运行应用程序时,我看到在一定时间后创建了10个使用名称task-scheduler-x创建的线程。我相信这是默认行为。

我从应用程序中删除了文件入站通道适配器配置并重新运行它,我注意到以下行为。

在3.0.2中,使用名称task-scheduler-x创建了10个线程。
在2.2.0中,虽然正在创建taskScheduler实例(我可以在日志中看到有关bean创建的消息),但我没有看到任何使用名称task-scheduler-x创建的线程。

为什么这两个版本之间的行为有所不同?如果我不想创建taskScheduler实例或者我不想为任务调度创建任何线程,我该怎么办?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

框架现在有一个使用taskScheduler的内置组件(标头通道注册表)。

虽然它确实具有实例化调度程序线程池的副作用,但它并没有真正使用很多资源。

如果您不需要/使用它,我们会考虑添加一个禁用它的选项。在此期间,您可以通过将此bean添加到上下文中来恢复到3.0之前的行为:

<bean id="integrationHeaderChannelRegistry" class="org.springframework.integration.channel.DefaultHeaderChannelRegistry">
    <property name="autoStartup" value="false" />
</bean>

我为此打开了JIRA Issue