|
对于最新稳定版本,请使用 Spring Integration 7.0.0! |
配置任务调度器
在春季集成中,应用上下文作为消息总线,你只需考虑几种配置选项。
首先,你可能想控制中央任务调度器实例。
你可以通过提供一颗名为任务调度器.
这也被定义为常数,具体如下:
IntegrationContextUtils.TASK_SCHEDULER_BEAN_NAME
默认情况下,Spring 集成依赖于ThreadPoolTaskScheduler,如 Spring Framework 参考手册中任务执行与调度部分所述。
那个默认情况任务调度器自动启动时有十个线程,但请参见全局属性。
如果你提供自己的任务调度器实例中,你可以将“autoStartup”属性设置为false或者提供你自己的泳池规模值。
当轮询消费者在其配置中提供显式任务执行器引用时,处理程序方法的调用发生在该执行器的线程池内,而非主调度池。 然而,当端点的轮询器没有任务执行器时,该任务会被主调度器的某个线程调用。
不要在轮询线程上运行长时间运行的任务。
改用任务执行器吧。
如果你有很多轮询端点,可能会导致线程饥饿,除非你增加线程池大小。
此外,投票消费者有默认选项收到超时一秒钟。
由于轮询线程在此期间会被阻塞,我们建议当存在多个此类端点时使用任务执行器,以避免饥饿。
或者,你也可以减少收到超时. |
| 如果端点的输入信道是基于队列的(即可轮询)信道之一,则称该端点为轮询消费者。 事件驱动消费者是指输入信道中设有调度者而非队列(换句话说,他们是可订阅的)。 此类端点没有轮询器配置,因为它们的处理程序是直接调用的。 |
|
在JEE容器里跑步时,可能需要用Spring的
|
当成为习俗时任务调度器在应用上下文中配置(如上所述)DefaultManagedTaskScheduler建议为其提供消息发布错误处理 (integrationMessagePublishingErrorHandlerBEAN)能够处理异常,作为ErrorMessage 会发送到错误通道,就像默认的“TaskScheduler” 一样BEAN 由 Framework 提供。 |
另请参见错误处理。