Мой проект должен создать файл, содержащий журналы и загрузить его в S3.
Для этого при каждом выполнении задания Spring Batch я создаю файл, подобный следующему:
String startTime = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss").format(new Date());
new File(startTime + "_error_logs");
Затем я добавляю его в набор JobParameters
, который передается моемуJobLauncher
вот так:
SimpleJobLauncher jobLauncher = new SimpleJobLauncher();
JobParameters param = new JobParametersBuilder()
.addString("startTime", startTime)
.toJobParameters();
jobLauncher.run(getJob(), param);
Затем на протяжении всего проекта я хочу получить доступ к этому параметру задания.Например, я могу получить его в своем классе JobCompletionNotificationListener
, который в функции afterJob
принимает JobExecution
в качестве параметра, что означает, что я могу сделать это:
String startTime = jobExecution.getJobParameters().getString("startTime");
Однако в GlobalControllerExceptionHandler
класс, у меня нет доступа к этому JobExecution
объекту, что означает, что я не могу получить параметр startTime
.
Можно ли как-нибудь передать ему данные?Или есть лучший подход к этой проблеме?Я знаю, что у меня будет такая же проблема в других классах.Другие подходы, о которых я подумал, тоже не сработают, например, сохранение строки в файле не сработает, потому что тогда, если параллельно выполняется другое задание, оно будет сбито с толку.