spring批处理多步骤作业和线程分配说明

时间:2015-10-11 13:43:45

标签: spring-integration spring-batch

我们有一个文件处理工作,我们在步骤1中读取文件,然后在步骤2中我们调用存储过程进行一些数据处理,在步骤3中我们清理数据。

我们使用spring集成来轮询包含文件名和路径以及其他一些信息的消息。

收到消息后,它会使用作业启动网关和作业参数启动作业。

我想知道的是,如果作业以例如thread-1开头,那么相同的线程完成所有3个步骤,或者弹簧批次可能会切换线程并完成其他线程。

注意:我们在工作中没有使用多线程。这是非常基本的工作,有3个步骤。

2 个答案:

答案 0 :(得分:0)

它应该只使用一个线程。

答案 1 :(得分:0)

有很多"取决于你的配置"潜力在这里。

您说您正在使用Spring Integration来启动批处理作业。我假设您正在使用<int-file:inbound-channel-adapter>配置的轮询器?如果这是真的并且您依赖于默认配置,那么它将使用单个线程进行轮询/处理。

此外,假设您在Spring Integration流程中没有显式多线程(在文件输入和调用批处理作业之间),默认通道和端点都是单线程的。

启动批处理作业后,再次取决于您的作业配置是否为多线程。从你的问题的声音,你没有明确多线程你的工作。默认情况下,它将是单线程的。

在大多数情况下,如果您尚未在Spring配置中的任何位置配置自定义TaskExecutor;你可以非常安全地假设一切都是多线程的。