Как получить идентификатор экземпляра задания Spring Batch из метода execute в TASKLET - PullRequest
0 голосов
/ 20 января 2020

Я использую макет с использованием версии Spring Batch 3.0.

Создайте задание и выполните размещение, выполнив метод запуска JobLauncher из TASKLET.

Я хочу узнать более точно, Задание выполняется или не выполняется через логы вставки c в запросе в TASKLET с соответствующим JobId и другими таблицами, отличными от метатаблиц.

public class SampleScheduler {

protected final Logger log = LoggerFactory.getLogger(this.getClass());

@Autowired
private JobLauncher jobLauncher;

@Autowired
private Job sampleJob;

public void run() {
    try {
        String dateParam = new Date().toString();
        JobParameters param = new JobParametersBuilder().addString("date",dateParam).toJobParameters();
        JobExecution execution = jobLauncher.run(sampleJob, param);

        log.debug("###################################################################");
        log.debug("Exit Status : " + execution.getStatus());
        log.debug("###################################################################");

    } catch (Exception e) {
        // e.printStackTrace();
        log.error(e.toString());
    }
}   
}

Код для вызова тасклета -

public class SampleTasklet implements Tasklet{

@Autowired
private SampleService sampleService;

@Override
public RepeatStatus execute(StepContribution contribution,
        ChunkContext chunkContext) throws Exception {

    sampleService.query();

    return RepeatStatus.FINISHED;
    }
}

Это мой код тасклета.

    StepContext stepContext = chunkContext.getStepContext();
    StepExecution stepExecution = stepContext.getStepExecution();
    JobExecution jobExecution = stepExecution.getJobExecution();
    long jobInstanceId = jobExecution.getJobId();

Правильно ли попробовать это в приведенном выше коде ЗАДАЧИ?

1 Ответ

0 голосов
/ 20 января 2020

как получить идентификатор экземпляра задания Spring Batch из метода execute в TASKLET

Метод org.springframework.batch.core.step.tasklet.Tasklet#execute предоставляет вам доступ к ChunkContext, который, в свою очередь, позволяет получить родительский элемент StepExecution и JobExecution. Затем вы можете получить идентификатор экземпляра задания при выполнении задания.

Правильно ли это попробовать в приведенном выше коде ЗАДАЧИ?

Да, это способ go.

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