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

Spring Boot应用程序中的启动Spring批处理作业问题

松建本
2023-03-14

我在一个Spring Boot应用程序中定义了多个Spring批处理作业。例如,job1、Job2。等等。

@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@TransactionConfiguration
@SpringApplicationConfiguration(classes = BatchApplication.class)
public class SubmitJobTest {

@Inject Job job1;

@Test
public void testLockJob() {

    logger.debug("lockId is @" + task.getLockId());

    JobParametersBuilder builder = new JobParametersBuilder()
            .addString("lockId", lockId.toString());
    try {
        JobExecution jobExecution = jobLauncher.run(this.job1, builder.toJobParameters());
        assertEquals(BatchStatus.COMPLETED, jobExecution.getStatus());

    } catch (JobExecutionAlreadyRunningException | JobRestartException | JobInstanceAlreadyCompleteException | JobParametersInvalidException ex) {
        ex.printStackTrace();
    }

}
    null

共有1个答案

申奇希
2023-03-14

你不能那么做。几周前我问过同样的问题:使用@SpringApplicationConfiguration:当使用spring-batch和spring-boot时,如何在测试中设置jobparameters

您必须直接使用JobLauncherCommandLineRunner:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {MyBatchRootConfiguration.class})
@IntegrationTest({"aProp=aValue"})
public class MyBatchTestClass {

    @Autowired
    private JobLauncherCommandLineRunner runner;

   @Test
   public void launchTest() {
        String[] myArgs = new String[]{"jobParam1=value1"};
        runner.run(myArgs);
   }
}
 类似资料:
  • 我有一个spring批处理作业,从CSV文件读取并写入数据库。我想让它重新启动。例如,如果在读取文件或写入db时出现异常,导致作业失败,则应从失败的同一点/块重新开始,而不是从头开始读取整个文件。 我正在从一个endpoint触发作业启动器,并在我的控制器中配置了它。 目前,我正在通过控制器将参数(这是一个唯一的标识符/数字)传递给作业参数,以运行新的作业实例。如果作业失败,我将使用与GET请求中

  • 我有一个spring boot应用程序,它应该将数据库(产品)中的一个表导出为文件,所以我使用spring batch来实现这一点,我的问题是,当作业完成时,应用程序重新启动,我认为这是因为spring batch在完成后关闭了实体管理器,但我不确定 注意1:我使用作为Reader。 注意2:我正在使用从controller启动作业 注5:我发现了一个类似问题的问题,但它没有答案和关闭(重复),但

  • 我需要从远程SFTP服务器下载一个文件,并使用spring batch处理它们。我已经实现了使用Spring集成下载文件的代码。但我无法从Spring集成组件启动Spring批处理作业。我有以下代码: 但这不起作用(上一个方法中的错误),因为找不到文件类型的bean。我不能把这两部分连在一起。如何连接集成和批处理?

  • 我有以下工作要处理在一定的时间间隔或特别的基础上。 作业中的步骤如下: 我也想要用户界面,在那里我可以触发一个特别的基础上的工作,而且我应该能够提供参数从用户界面。 我想用Spring batch来完成这个任务,但它更多的是用于读->处理->写之类的工作。这里,在第一步中,我正在生成由第二步读取的数据。我不确定我是否还可以使用Spring batch来实现这个,或者有更好的方法来实现这个。

  • 是否可以配置Spring批处理管理员来启动主作业和从作业。我们有一个进程作为主节点和3-4个从节点。 Spring batch admin在单独的JVM进程中运行,但所有Spring批处理作业都使用相同的批处理数据库模式。