Почему jobOperator.startNextInstance не принимает параметры?

У меня есть работа, которая принимает параметры x=y и я запланировал запускать каждые 10 секунд. Вот как я начинаю это:

final JobExecution previousExecution = jobRepository.getLastJobExecution(jobId, jobParameters);
if (previousExecution != null && previousExecution.getStartTime() != null) {
    return jobOperator.startNextInstance(jobId);
} else {
    return jobOperator.start(jobId, PropertiesConverter.propertiesToString(jobParametersConverter.getProperties(jobParameters)));
}

Первый раз, когда я начинаю работу, она идет в else пункт, и он начинается успешно. Через 10 секунд он уходит внутрь if пункт, и он начинается успешно тоже. Затем я вручную запускаю задание (через REST API), но на этот раз с параметрами x=z и он успешно запускает его. Затем проходит 10 секунд, и работа собирается начать снова. Сейчас jobRepository.getLastJobExecution возвращает правильный x=y выполнение, но угадайте, что - jobOperator.startNextInstance не заботится о ваших параметрах - он принимает только jobId, И внутри он грузит не то x=z экземпляр и запускает работу с x=z отныне и навсегда каждые 10 секунд.

Мой вопрос - почему startNextInstance не принять задание параметров? Я хочу запустить nextInstance для заданных параметров задания, почему это не разрешено?

1 ответ

JobOperatorВ соответствии с документацией, интерфейс низкого уровня и на самом деле не идеальный способ запуска Spring Batch Jobs. JobLauncher действительно правильный способ запуска заданий в Spring Batch и принимает параметры.

Другие вопросы по тегам