Spring Batch 5 с Spring Boot 3: невозможно выполнить несколько заданий последовательноJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Spring Batch 5 с Spring Boot 3: невозможно выполнить несколько заданий последовательно

Сообщение Anonymous »

Постановка проблемы:
Перед обновлением до Spring Boot 3 и Spring Batch 5 я мог выполнять несколько объектов Job, определенных в моем приложении, в одном и том же файл. Задания будут выполняться последовательно в зависимости от их порядка в конфигурации. Мне не нужно было явно указывать имя задания.
После обновления до Spring Boot 3, Spring Batch 5 и JDK 17 я больше не могу выполнять несколько заданий без явного указания задания. имя. Если я попытаюсь запустить приложение без указания имени задания, произойдет сбой с ошибкой:

Код: Выделить всё

java.lang.IllegalArgumentException: Job name must be specified in case of multiple jobs
Когда я указываю имя задания в application.yml вот так:

Код: Выделить всё

spring:
batch:
job:
name: test1Job
Для одной работы подходит. Однако если я попытаюсь указать несколько имен заданий либо в виде строки, разделенной запятыми, либо в виде массива, это не сработает:

Код: Выделить всё

spring:
batch:
job:
name(s): test1Job,test2Job # This doesn't work
Мне не удалось найти четкую документацию или примеры для запуска нескольких объектов заданий в этой новой версии Spring Batch.
Что я могу сделать? Пробовали
  • Указать одно имя задания в application.yml, работает нормально.
  • Использование названий заданий, разделенных запятыми, или массива для несколько заданий в application.yml, что не работает.
  • Поиск в официальной документации Spring Batch 5 для обработки нескольких вакансии, но я не смог найти решение.
Пример кода
Вот упрощенная версия моей конфигурации с двумя заданиями. Каждое задание определяется в отдельном классе @Configuration.

Код: Выделить всё

@Configuration
@AllArgsConstructor
public class Test1JobConfig {

private Config config;
private PlatformTransactionManager transactionManager;

@StepScope
@Bean(name = "reader1", destroyMethod = "")
public Reader1 reader1() {
return new Reader1();
}

@StepScope
@Bean(name = "writer1", destroyMethod = "")
public Writer1 writer1() {
return new Writer1();
}

@Bean
public Step test1Step(Reader1 reader1, Writer1 writer1, ChunkListener listener, Config config, JobRepository jobRepository) {
return new StepBuilder("test1Step", jobRepository)
.
chunk(config.getChunkSize(), transactionManager)
.reader(reader1)
.writer(writer1)
.listener(listener)
.build();
}

@Bean
public Job test1Job(Reader1 reader1, Writer1 writer1, ChunkListener listener, JobExecutionListener executionListener, Config config, JobRepository jobRepository) {
return new JobBuilder("test1Job", jobRepository)
.incrementer(new RunIdIncrementer())
.listener(executionListener)
.flow(test1Step(reader1, writer1, listener, config, jobRepository))
.end()
.build();
}
}
Test2JobConfig

Код: Выделить всё

@Configuration
@AllArgsConstructor
public class Test2JobConfig {

private Config config;
private PlatformTransactionManager transactionManager;

@StepScope
@Bean(name = "reader2", destroyMethod = "")
public Reader2 reader2() {
return new Reader2();
}

@StepScope
@Bean(name = "writer2", destroyMethod = "")
public Writer2 writer2() {
return new Writer2();
}

@Bean
public Step test2Step(Reader2 reader2, Writer2 writer2, ChunkListener listener, Config config, JobRepository jobRepository) {
return new StepBuilder("test2Step", jobRepository)
.
chunk(config.getChunkSize(), transactionManager)
.reader(reader2)
.writer(writer2)
.listener(listener)
.build();
}

@Bean
public Job test2Job(Reader2 reader2, Writer2 writer2, ChunkListener listener, JobExecutionListener executionListener, Config config, JobRepository jobRepository) {
return new JobBuilder("test2Job", jobRepository)
.incrementer(new RunIdIncrementer())
.listener(executionListener)
.flow(test2Step(reader2, writer2, listener, config, jobRepository))
.end()
.build();
}
}
Вопросы:
Как настроить и выполнить несколько заданий в Spring Batch 5 с помощью Spring Boot 3?

Есть ли способ:
  • Запустить несколько заданий без явного указания их имен?
    < li>Укажите несколько имен заданий в файле application.yml, чтобы запускать их последовательно?
  • В качестве альтернативы существует ли новый рекомендуемый подход для запуска нескольких заданий в этой версии Spring Batch ?
Любые рекомендации или примеры код был бы очень признателен. Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/792 ... quentially
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»