Запуск / остановка Spring Batch с Rest API - PullRequest
0 голосов
/ 28 октября 2019

Я использую подпружиненную партию, развернутую на PCF и создающую 2 вызова покоя с помощью контроллера покоя.

1) Start - Rest call вызовет подпружиненную партию - нормально работает

2) End - Restвызов прервет подпружиненный пакет - не в состоянии найти решение или метод, как это сделать

Я смотрю, как завершить подпружиненное пакетное задание между запущенной программой так же, как когда мы убиваем идентификатор процесса Java и завершаем работу.

 */
@RestController
public class BatchTriggerController {

    private static final Logger log = LogManager.getLogger(BatchTriggerController.class);


    @Autowired
    JobLauncher jobLauncher;

    @Autowired
    Job job;

    @RequestMapping(value = "/trigger/start", method = RequestMethod.GET)
    public String invokeBatch() {
        //
        long start = System.currentTimeMillis();

        JobParameters jobParameters = new JobParametersBuilder().addLong("time", System.currentTimeMillis()).toJobParameters();

        long end = System.currentTimeMillis();

        NumberFormat formatter = new DecimalFormat("#0.00000");
        System.out.print("Execution time is " + formatter.format((end - start) / 1000d) + " seconds");
        log.info("loader Execution time is " + formatter.format((end - start) / 1000d) + " seconds");


        try {
            jobLauncher.run(job, jobParameters);
        } catch (Exception e) {
            e.printStackTrace();
            log.error("BatchTriggerController Exception "+e.getMessage());
            return "Fail";
        }
        return "Success";
    }

    @RequestMapping(value = "/trigger/stop", method = RequestMethod.GET)
    public String stopBatch() {
        //
        long start = System.currentTimeMillis();

        JobParameters jobParameters = new JobParametersBuilder().addLong("time", System.currentTimeMillis()).toJobParameters();

        long end = System.currentTimeMillis();

        NumberFormat formatter = new DecimalFormat("#0.00000");
        System.out.print("Execution time is " + formatter.format((end - start) / 1000d) + " seconds");
        log.info("loader Execution time is " + formatter.format((end - start) / 1000d) + " seconds");


        try {
            jobLauncher.STOP(job, jobParameters);//NO METHOD STOP 
        } catch (Exception e) {
            e.printStackTrace();
            log.error("BatchTriggerController Exception "+e.getMessage());
            return "Fail";
        }
        return "Success";
    }

1 Ответ

1 голос
/ 29 октября 2019

jobLauncher.STOP (job, jobParameters); // НЕТ ОСТАНОВКИ МЕТОДА

Средство запуска заданий используется для запуска заданий, метод не предлагаетсячтобы остановить работу.

Вам нужен более сложный JobOperator API, который позволяет запускать / останавливать / перезапускать / отменять задания. Более подробную информацию можно найти в разделе JobOperator .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...