当前位置: 首页 > 面试题库 >

使用注释以并行方式(拆分)配置Spring Batch步骤

方心思
2023-03-14
问题内容

在我研究Spring Batch文档以并行执行步骤的地方,我只能通过XML看到它的配置,如下所示。

<split id="split1" next="step4">
<flow>
    <step id="step1" parent="s1" next="step2"/>
    <step id="step2" parent="s2"/>
</flow>
<flow>
    <step id="step3" parent="s3"/>
</flow>

我正在使用Spring Batch编写应用程序,其中我也使用过Spring
Boot,并且我的所有配置都是使用注释完成的。是否可以使用Java配置来配置拆分步骤?我检查了Spring Batch中Step接口的API
文档,但是它没有Split
Step的默认实现。有什么办法可以使用现有的默认实现来实现它?

目前,我已经完成了其他类似的工作:

@Bean
public Step someStep() {
    return stepBuilderFactory.get("someStep")
            .<A, B> chunk(1-).reader(someReader)
            .processor(someProcessor).writer(someWriter).build();
}

@Bean
public Job historicalDataJob() {
    return jobBuilderFactory.get("someJOb")
            .incrementer(new RunIdIncrementer()).flow(someStep()).end()
            .build();
}

问题答案:

SimpleJobBuilder配置通过Java配置分裂提供设施。以下是从FlowJobBuilderTests(https://github.com/spring-
projects/spring-batch/blob/master/spring-batch-
core/src/test/java/org/springframework/batch/core/job/ builder /
FlowJobBuilderTests.java
)。显然,您需要对此进行分解,但这应该可以说明总体思路。

// Create each flow
Flow flow = new FlowBuilder<Flow>("subflow").from(step1).end();

// Create the job
SimpleJobBuilder builder = new JobBuilder("flow").repository(jobRepository).start(step2);

// Create split providing an async task executor so the flows are executed in parallel
builder.split(new SimpleAsyncTaskExecutor()).add(flow).end();

// Build the job and execute it
builder.preventRestart().build().execute(execution);


 类似资料:
  • 当我查看Spring Batch留档以并行执行步骤时,我只看到它通过XML的配置,如下所示。 我正在使用Spring批处理编写一个应用程序,我也使用了Spring Boot,我的所有配置都是使用注释完成的。是否有一个我可以使用Java配置来配置拆分步骤的方法?我查看了Spring Batch中Step interface的API文档,但它没有Split Step的默认实现。有没有办法使用现有的默认

  • 我对Spring Boot配置有问题。 我已经使用https://start.spring.io/ 我有一个问题,配置只适用于子曲库中的类: 我尝试了annotation@ComponentScan,但没有任何帮助。 你知道我能用这个做什么吗?

  • 本文向大家介绍Spring 使用注解方式进行事务管理配置方式,包括了Spring 使用注解方式进行事务管理配置方式的使用技巧和注意事项,需要的朋友参考一下 使用步骤: 步骤一、在spring配置文件中引入<tx:>命名空间 步骤二、具有@Transactional 注解的bean自动配置为声明式事务支持 步骤三、在接口或类的声明处 ,写一个@Transactional. 要是只在接口上写, 接口的

  • 问题内容: 在过去的几个小时中,我一直在努力解决这个问题,但无法解决。我想我仍然必须习惯于函数式编程风格;) 我写了一个递归函数,它遍历目录结构并对某些文件进行处理。此功能使用异步IO方法。现在,我要在完成整个遍历后执行一些操作。 如何确保在执行完所有调用但仍使用异步IO功能后执行此操作? 问题答案: 查找“ 步骤”模块。它可以链接异步函数调用,并将结果从一个传递到另一个。

  • 我想实现这个用例,我有3个流,

  • 问题内容: 我试图仅通过使用和此参考来配置和设置Log4j2 。我使用的代码如下: 注意 它扩展了默认情况下已经配置的控制台 它尝试向根记录器添加滚动文件追加器 我得到以下异常: 如果我在上面的代码之后注释掉该代码,它可以工作,但似乎缺少配置滚动文件附加程序的内容。我应该怎么做才能解决这个问题? 问题答案: 在 log4j 2.x中, 您必须以这种方式指定日期格式 标记格式的开始 表示它是日期格式

  • Im使用Log4j2 2.6.2。在应用程序的开始,我调用以下代码 输出显示为 即默认布局正在使用中。我对默认值的编程重写不起作用。有谁能帮你修改代码吗?

  • 问题内容: 我正在尝试将Hibernate 4仅用于注释和一个文件。我做了自己的注释,并使用反射将其添加到配置中。我可以用这种方式很好地使用Hibernate 4,但是我的配置是使用不推荐使用的方法构建的。 (不建议使用的代码:)。 甚至hibernate 4文档也显示以这种方式构建配置。 如果我尝试使用新方法(,则不会得到相同的结果,并且似乎很多不必要的代码可以完全执行不推荐使用的方法。但是,我