我在一个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();
}
}
你不能那么做。几周前我问过同样的问题:使用@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批处理作业都使用相同的批处理数据库模式。
布尔沙赫布尔