当前位置: 首页 > 知识库问答 >
问题:

Spring批处理作业应用程序挂起与步骤分区

柳羽
2023-03-14

我们的应用程序是使用线程大小为4的spring batch step分区实现的。这意味着我们的步骤在4个线程中读取800万条记录,每个线程读取200万条记录。线程在代码的某个点上,基本上应用程序代码中最后一次调用等待的时间比预期的要长,大约40分钟,而不是5到10分钟。

<!-- partitioner job -->
  <job id="partitionJob" xmlns="http://www.springframework.org/schema/batch">

    <!-- master step, 10 threads (grid-size)  -->
    <step id="masterStep">
    <partition step="slave" partitioner="rangePartitioner">
        <handler grid-size="10" task-executor="taskExecutor" />
    </partition>
    </step>

  </job>

  <!-- each thread will run this job, with different stepExecutionContext values. -->
  <step id="slave" xmlns="http://www.springframework.org/schema/batch">
    <tasklet>
        <chunk reader="pagingItemReader" writer="flatFileItemWriter"
            processor="itemProcessor" commit-interval="1" />
    </tasklet>
  </step>

  <bean id="rangePartitioner" class="com.mkyong.partition.RangePartitioner" />

  <bean id="taskExecutor" class="org.springframework.core.task.SimpleAsyncTaskExecutor" />

  <!-- inject stepExecutionContext -->
  <bean id="itemProcessor" class="com.mkyong.processor.UserProcessor" scope="step">
    <property name="threadName" value="#{stepExecutionContext[name]}" />
  </bean>

共有1个答案

艾翼
2023-03-14

这是根据@MichaelMinella的评论解决的。我不必在分区方法上进行同步。

我的批处理被删除的原因是因为存储过程问题,与spring批处理无关

 类似资料:
  • null null 任何解决问题的帮助/指针都是非常感谢的。 谢谢,哈尔·克里尚

  • 我正在尝试在Spring批处理中并行运行多个作业。在谷歌上搜索了很多之后,我遇到了JobStep。有没有人使用过JobStep可以解释如何使用它来并行运行作业,或者有没有其他方法可以并行运行2个独立的作业,即当我启动批处理时,2个作业应该开始并行运行。我的要求就像 当我的应用程序启动时,两个作业都应该开始运行。使用spring batch是否可以这样做 编辑:我甚至试过这种方法 我面临着例外。sp

  • 我有一个spring批处理作业,它接收平面文件,处理记录,并将输出写入另一个平面文件。我分别使用了和作为读写器。然而,当我尝试实现多线程步骤时,我的工作无法正常工作。我在日志文件中收到以下警告 你能帮我实现多线程步骤吗?

  • 我正在处理200万记录和网格大小为20的Spring批处理应用程序。对于100200k记录,它工作正常,但200万分区后失败。 分区信息: 它打印的最后一个日志是创建的分区,然后控件永远不会进入writer。对于20万条记录来说,它很困难,所以我增加了连接池的大小,这解决了这个问题,但在200万行中失败了。 没有错误,只是挂在那里。

  • 你可以点击 “设置任务计划”来为一个批处理作业设置计划和点击 “删除任务计划”来移除计划。 如果你在“常规”选项卡选择“不管用户是否登录都要运行”,当你保存计划时你必须在 Windows 计划程序提供你的操作系统用户密码。 【注意】请在设置计划之前保存批处理作业。在运行计划之前,在连接窗口内的密码必须保存。

  • 添加工作到批处理作业 在“常规”选项卡的底部窗格中,选择工作类型,然后如有需要浏览连接、数据库和/或模式以找出你想运行的工作。 你可以双击或拖放工作来将工作从“可用的工作”列表移动到“已选择的工作”列表。若要从已选择的工作列表删除工作,请以相同的方式移除它们。你可以在一个批处理作业中运行来自不同服务器的配置文件。 若要重新排序工作的序列,可使用 “上移”或 “下移”按钮。 如果你想备份整个服务器,