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

spring batch 1.1中的并行步骤

嵇浩淼
2023-03-14

希,

由于要运行流程的机器的限制,不得不使用spring Batch1.1,我对配置并行步骤有些怀疑。在较新版本的spring batch中,您可以使用spring batch中的flow package来实现这一点,但该包在1.1版本中不存在。

  1. 在spring Batch1.1中,如何在自己的线程中执行不同的步骤?(默认情况下,我理解在作业中配置的步骤是顺序的)

谢谢

共有1个答案

伊羽
2023-03-14

当涉及到Spring批处理并行处理时,可能是最好的阅读地点:

[http://docs.spring.io/spring-batch/reference/html/scalability.html][1]

<job id="job1">
    <split id="split1" task-executor="taskExecutor" next="step4">
        <flow>
            <step id="step1" parent="s1" next="step2"/>
            <step id="step2" parent="s2"/>
        </flow>
        <flow>
            <step id="step3" parent="s3"/>
        </flow>
    </split>
    <step id="step4" parent="s4"/>
</job>

<beans:bean id="taskExecutor" class="org.spr...SimpleAsyncTaskExecutor"/>

上面片段中的关键时刻是多线程的taskExecutor定义。步骤“step1、step2”在单个流中声明,而step3在另一个流中声明。这意味着步骤1和步骤2将顺序运行,但与步骤3并行。

 类似资料:
  • 我们正在使用最新的Spark构建。我们有一个非常大的元组列表(8亿)作为输入。我们使用具有主节点和多个工作节点的docker容器运行Pyspark程序。驱动程序用于运行程序并连接到主机。 运行程序时,在sc.parallelize(tuplelist)行,程序要么退出并显示java堆错误消息,要么完全退出而不出错。我们不使用任何Hadoop HDFS层,也不使用纱线。 到目前为止,我们已经考虑了这

  • 我正在尝试使用并行流连接字符串。 我在下面的代码中也发现了同样的问题。 在这里,我还使用了一个同步集合,所有的方法都是线程安全的。 我在Java文档中看到了这个 我是不是漏掉了什么?使用线程安全的数据结构还不够吗?

  • 我想并行处理一个集合,但我在实现它时遇到了困难,因此我希望得到一些帮助。 foreach方法的原型采用作为参数,但我希望它等待异步lambda。

  • 我一直在尝试打字稿,但我现在有点卡在如何有效地使用async/wait上。 我正在向数据库中插入一组记录,我需要获得每次插入返回的ID列表。下面的简化示例一般来说是有效的,但它并不像我所希望的那么优雅,而且是完全连续的。 我试图使用来避免手动创建列表,但我可以让它工作。 我还希望有有限的并行性。因此,我的异步调用应该在一定的限制下并行进行,例如,我只希望有10个打开的请求,但不希望有更多。 有没有

  • 我不确定使用spring Batch是否可行。任何想法或我都无法实现它。谢谢。

  • 同步 同步指的是线程之间的协作配合,以共同完成某个任务。在整个过程中,需要注意两个关键点:一是共享资源的访问, 二是访问资源的顺序。通过前面的介绍,我们已经知道了如何让多个线程访问共享资源,但并没介绍如何控制访问顺序,才不会出现错误。如果两个线程同时访问同一内存地址的数据,一个写,一个读,如果不加控制,写线程只写了一半,读线程就开始读,必然读到的数据是错误的,不可用的,从而造成程序错误,这就造成了