对于最新的稳定版本,请使用 Spring Integration 6.5.1! |
配置任务计划程序
在 Spring Integration 中,ApplicationContext
起着消息总线的核心作用,您只需要考虑几个配置选项。
首先,您可能想控制中央TaskScheduler
实例。
您可以通过提供名为taskScheduler
.
这也被定义为一个常量,如下所示:
IntegrationContextUtils.TASK_SCHEDULER_BEAN_NAME
默认情况下,Spring Integration 依赖于ThreadPoolTaskScheduler
,如 Spring Framework 参考手册的 任务执行和调度 部分所述。
该默认值TaskScheduler
使用包含 10 个线程的池自动启动,但请参阅全局属性。
如果您提供自己的TaskScheduler
实例,您可以将 'autoStartup' 属性设置为false
或提供您自己的池大小值。
当轮询使用者在其配置中提供显式任务执行器引用时,处理程序方法的调用发生在该执行器的线程池中,而不是主调度程序池中。 但是,当未为端点的轮询器提供任务执行器时,它将由主调度程序的线程之一调用。
不要在轮询器线程上运行长时间运行的任务。
请改用任务执行器。
如果有很多轮询终结点,则可能会导致线程匮乏,除非增加池大小。
此外,轮询使用者具有默认值receiveTimeout 一秒钟。
由于轮询器线程在此期间会阻塞,因此我们建议您在存在许多此类端点时使用任务执行器,以避免饥饿。
或者,您可以减少receiveTimeout . |
如果端点的输入通道是基于队列的(即可轮询的)通道之一,则该端点是轮询使用者。 事件驱动的消费者是那些具有调度器而不是队列的输入通道的消费者(换句话说,它们是可订阅的)。 此类端点没有轮询器配置,因为它们的处理程序是直接调用的。 |
在 JEE 容器中运行时,您可能需要使用 Spring 的
|
当自定义TaskScheduler 在应用程序上下文中配置(如上所述DefaultManagedTaskScheduler ),建议为其提供MessagePublishingErrorHandler (integrationMessagePublishingErrorHandler bean)能够处理异常ErrorMessage`s sent to the error channel, as is done with the default `TaskScheduler 框架提供的 bean。 |
另请参阅错误处理以获取更多信息。