我有一个独立的应用程序,它使用File入站通道适配器以一定的间隔从指定位置轮询文件。我没有定义taskScheduler实例。当使用Spring集成2.2.0和3.0.2运行应用程序时,我看到在一定的时间后,有10个线程以task-schedule-x的名称创建。我认为这是默认行为。
我从应用程序中删除了文件入站通道适配器配置并重新运行它,我注意到了以下行为。
在3.0.2中,将创建10个名为task-schedule-x的线程
在2.2.0中,虽然正在创建一个taskScheduler实例(我可以在日志中看到关于bean创建的消息),但我没有看到任何名为task-schedule-x的线程被创建。
为什么这两个版本的行为不同?如果我不想创建taskScheduler实例,或者我不想为任务调度创建任何线程,该怎么办?
谢谢你的帮助。
框架现在有一个使用taskScheduler
的内置组件(头通道注册表)。
它并没有真正使用太多资源,尽管它确实有实例化调度程序线程池的副作用。
如果你不需要/使用它,我们将考虑添加一个选项来禁用它。同时,你可以通过将这个bean添加到你的上下文中来恢复到3.0之前的行为:
<bean id="integrationHeaderChannelRegistry" class="org.springframework.integration.channel.DefaultHeaderChannelRegistry">
<property name="autoStartup" value="false" />
</bean>
我为此开了一期JIRA。