Spring batch Spring批处理-网格大小

Spring batch Spring批处理-网格大小,spring-batch,Spring Batch,我希望这里面有一些清晰的画面 我有2000条记录,但我在主机中限制1000条记录,以便使用gridSize=250的rownum进行分区,并在10台机器上运行的5个从机之间进行分区 我假设将创建1000/250=4个步骤 是否将数据信息发送到4个从属设备,使1个从属设备处于空闲状态?如果号码 步骤的数量大于从java进程的数量,我假设 数据最终将分布在所有从机上 一旦所有步骤都完成,从属java进程内存是否会丢失 释放(当步骤存在时,所有对象都从内存中释放) 如果1000/250的所有步骤均已完

我希望这里面有一些清晰的画面

我有2000条记录,但我在主机中限制1000条记录,以便使用gridSize=250的rownum进行分区,并在10台机器上运行的5个从机之间进行分区

我假设将创建1000/250=4个步骤

  • 是否将数据信息发送到4个从属设备,使1个从属设备处于空闲状态?如果号码 步骤的数量大于从java进程的数量,我假设 数据最终将分布在所有从机上
  • 一旦所有步骤都完成,从属java进程内存是否会丢失 释放(当步骤存在时,所有对象都从内存中释放)
  • 如果1000/250的所有步骤均已完成=4个步骤,则处理 剩余1000条记录,我如何在没有 调度程序触发作业

  • 由于您没有显示您的
    分区器
    代码,因此我将尝试仅根据假设进行回答

    您不必假设步骤的数量(我假设将创建1000/250=4个步骤),而是从
    分区
    方法返回的在
    java.util.Map
    中创建的条目的数量

    partition
    方法将
    gridSize
    作为参数,是否使用此参数取决于您自己。如果您决定基于其他参数进行分区(而不是均匀分布计数),则可以这样做。最终,分区数将是返回映射中的条目数,存储在
    ExecutionContext
    中的值可用于在读卡器中获取数据等

    接下来,您可以通过设置适当的
    TaskExecutor
    concurrencyLimit
    值来选择要并行启动的步骤数,即,您可以在
    分区中创建100个步骤,但只希望并行启动4个步骤,这可以通过分区器顶部的配置设置很好地实现

    答案#1:如前所述,您必须使用在partitioner中创建的
    ExecutionContext
    信息,在阅读器中对数据分发进行编码。这不是自动发生的

    回答#2:不确定你的确切意思,但是的,完成后所有内容都会被释放,信息会保存在元数据中

    答案#3:正如前面所指出的,所有步骤都将针对所有数据一次性创建。读卡器和配置可以控制为哪些数据运行哪些步骤以及并行运行多少步骤


    希望能有帮助

    既然您没有显示您的
    分区器
    代码,我将尝试仅根据假设进行回答

    您不必假设步骤的数量(我假设将创建1000/250=4个步骤),而是从
    分区
    方法返回的在
    java.util.Map
    中创建的条目的数量

    partition
    方法将
    gridSize
    作为参数,是否使用此参数取决于您自己。如果您决定基于其他参数进行分区(而不是均匀分布计数),则可以这样做。最终,分区数将是返回映射中的条目数,存储在
    ExecutionContext
    中的值可用于在读卡器中获取数据等

    接下来,您可以通过设置适当的
    TaskExecutor
    concurrencyLimit
    值来选择要并行启动的步骤数,即,您可以在
    分区中创建100个步骤,但只希望并行启动4个步骤,这可以通过分区器顶部的配置设置很好地实现

    答案#1:如前所述,您必须使用在partitioner中创建的
    ExecutionContext
    信息,在阅读器中对数据分发进行编码。这不是自动发生的

    回答#2:不确定你的确切意思,但是的,完成后所有内容都会被释放,信息会保存在元数据中

    答案#3:正如前面所指出的,所有步骤都将针对所有数据一次性创建。读卡器和配置可以控制为哪些数据运行哪些步骤以及并行运行多少步骤


    希望能有帮助

    显示您的分区代码。显示您的分区代码。谢谢。Gary/任何人,你能帮助我通过另一个java进程触发作业(java进程)吗。我能够触发&可以在taskmanager中看到java进程,但我没有看到作业在作业存储库(数据库)中运行。请帮助meI将消息发送到频道。如何使用jmsTemplate发送到目标队列。通道名称:jms出站:谢谢。Gary/任何人,你能帮助我通过另一个java进程触发作业(java进程)吗。我能够触发&可以在taskmanager中看到java进程,但我没有看到作业在作业存储库(数据库)中运行。请帮助meI将消息发送到频道。如何使用jmsTemplate发送到目标队列。通道名称:jms出站: