Учебники

Spring Batch — Архитектура

Ниже приводится схематическое представление архитектуры Spring Batch. Как показано на рисунке, архитектура содержит три основных компонента, а именно: приложение, пакетное ядро и пакетная инфраструктура .

Архитектура

Приложение. Этот компонент содержит все задания и код, который мы пишем с использованием среды Spring Batch.

Batch Core — этот компонент содержит все классы API, необходимые для управления и запуска Batch Job.

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

Компоненты Spring Batch

На следующем рисунке показаны различные компоненты Spring Batch и их связь друг с другом.

Компоненты

работа

В приложении Spring Batch задание — это пакетный процесс, который должен быть выполнен. Он работает от начала до конца без перерыва. Это задание делится на этапы (или задание содержит этапы).

Мы настроим работу в Spring Batch, используя файл XML или класс Java. Ниже приведена XML-конфигурация задания в Spring Batch.

<job id = "jobid"> 
   <step id = "step1" next = "step2"/> 
   <step id = "step2" next = "step3"/> 
   <step id = "step3"/> 
</job>

Пакетное задание настраивается в тегах <job> </ job>. У него есть атрибут с именем id . В рамках этих тегов мы определяем определение и порядок шагов.

Перезапускаемый — обычно, когда задание выполняется и мы пытаемся запустить его снова, это считается перезапуском, и оно будет запущено снова. Чтобы избежать этого, вам нужно установить для перезапускаемого значения значение false, как показано ниже.

<job id = "jobid" restartable = "false" >

</job>

шаг

Шаг — это независимая часть задания, которая содержит необходимую информацию для определения и выполнения задания (его части).

Как указано на диаграмме, каждый шаг состоит из ItemReader, ItemProcessor (необязательно) и ItemWriter. Задание может содержать один или несколько шагов .

Читатели, писатели и процессоры

Средство чтения элементов считывает данные в приложение Spring Batch из определенного источника, тогда как средство записи элементов записывает данные из приложения Spring Batch в конкретное место назначения.

Процессор Item — это класс, который содержит код обработки, который обрабатывает данные, считанные в пакет пружины. Если приложение читает «n» записей, то код в процессоре будет выполняться для каждой записи.

Когда нет читателя и писателя, тасклет действует как процессор для SpringBatch. Он обрабатывает только одну задачу. Например, если мы пишем задание с простым шагом, в котором мы читаем данные из базы данных MySQL, обрабатываем их и записываем в файл (плоский), то наш шаг использует —

  • Читатель, который читает из базы данных MySQL.

  • Автор, который пишет в плоский файл.

  • Пользовательский процессор, который обрабатывает данные по нашему желанию.

Читатель, который читает из базы данных MySQL.

Автор, который пишет в плоский файл.

Пользовательский процессор, который обрабатывает данные по нашему желанию.

<job id = "helloWorldJob"> 
   <step id = "step1"> 
      <tasklet> 
         <chunk reader = "mysqlReader" writer = "fileWriter" 
            processor = "CustomitemProcessor" ></chunk> 
      </tasklet> 
   </step> 
</ job>

Spring Batch предоставляет длинный список читателей и писателей . Используя эти предопределенные классы, мы можем определить бины для них. Мы обсудим читателей и писателей более подробно в следующих главах.

JobRepository

Репозиторий Job в Spring Batch предоставляет операции Create, Retrieve, Update и Delete (CRUD) для реализаций JobLauncher, Job и Step. Мы определим репозиторий заданий в файле XML, как показано ниже.

<job-repository id = "jobRepository"/> 

В дополнение к идентификатору , есть еще несколько опций (необязательно). Ниже приведена конфигурация репозитория заданий со всеми параметрами и их значениями по умолчанию.

<job-repository id = "jobRepository" 
   data-source = "dataSource" 
   transaction-manager = "transactionManager" 
   isolation-level-for-create = "SERIALIZABLE" 
   table-prefix = "BATCH_" 
   max-varchar-length = "1000"/>

Репозиторий в памяти. Если вы не хотите сохранять доменные объекты Spring Batch в базе данных, вы можете настроить версию jobRepository в памяти, как показано ниже.

<bean id = "jobRepository" 
   class = "org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean ">
   <property name = "transactionManager" ref = "transactionManager"/>
</bean>

JobLauncher

JobLauncher — это интерфейс, который запускает задание Spring Batch с заданным набором параметров . SampleJoblauncher — это класс, который реализует интерфейс JobLauncher . Ниже приведена конфигурация JobLauncher.

<bean id = "jobLauncher" 
   class = "org.springframework.batch.core.launch.support.SimpleJobLauncher"> 
   <property name = "jobRepository" ref = "jobRepository" /> 
</bean>

JobInstance

JobIinstance представляет логический прогон задания; он создается, когда мы запускаем работу. Каждый экземпляр задания отличается по имени задания и параметрам, переданным ему во время работы.

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

JobExecution и StepExecution

JobExecution и StepExecution представляют представление выполнения задания / шага. Они содержат информацию о выполнении задания / шага, такую ​​как время начала (задания / шага), время окончания (задания / шага).