我有兩個彈簧應用程式。第一個是 Spring Boot(應用程式A),另一個是獨立的 Spring Batch(應用程式B)應用程式。
通常,我使用腳本來執行 Spring Batch (app B ) jar,在 main 方法中,我將撰寫我想要運行的作業。
ApplicationContext context = SpringApplication.run(RacerBatchApp.class, args);
JobLauncher jobLauncher = (JobLauncher) context.getBean("jobLauncher");
try {
jobLauncher.run((Job) context.getBean("JOB NAME -> XXX"), new JobParametersBuilder().addLong("job.key", System.currentTimeMillis()).toJobParameters());
} catch (BeansException | JobExecutionAlreadyRunningException | JobRestartException | JobInstanceAlreadyCompleteException | JobParametersInvalidException e) {
e.printStackTrace();
}
我有一個新的要求,即通過應用程式A在應用程式B中啟動特定的作業。基本上 app A Spring Boot 將執行獨立的 app B jar 和作業名稱XXX(希望我清楚)
另外,我不想將 Spring Batch 依賴項添加到 Spring Boot 應用程式中。
我怎樣才能做到這一點?
謝謝
uj5u.com熱心網友回復:
您可以將作業名稱作為引數傳遞給 appA,并在main方法中使用它從應用程式背景關系中按名稱獲取作業:
java -jar appA.jar job.name=myJob
然后在主要方法中:
String jobName = ..; // get job.name from application arguments;
Job job = context.getBean(jobName, Job.class);
// run the job
...
也就是說,我會讓 appB 成為一個 Boot Batch 應用程式,然后運行:
java -jar appB.jar --spring.batch.job.names=myJob
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/536406.html
標籤:春天弹簧靴弹簧批
