Рубрики
Без рубрики

Весенняя партия

Узнайте о Spring Batch в этой статье Рене Энрикеса, технического лидера многонациональной компании со штаб-квартирой в Силиконовой долине, и Альберто Салазара, предпринимателя и страстного любителя Java…

Автор оригинала: PACKT.

Узнайте о Spring Batch в этой статье Рене Энрикеса, технического лидера многонациональной компании со штаб-квартирой в Силиконовой долине, и Альберто Салазара, предпринимателя и страстного консультанта по Java.

Узнайте о Spring Batch в этой статье Рене Энрикеса, технического лидера многонациональной компании со штаб-квартирой в Силиконовой долине, и Альберто Салазара, предпринимателя и страстного консультанта по Java.

Spring Batch-это полная платформа для создания надежного пакетного приложения (https://projects.spring.io/spring-batch/). Вы можете создавать повторно используемые функции для обработки больших объемов данных или задач, обычно известных как массовая обработка. Spring Batch предоставляет множество полезных функций, таких как следующие:

• * Ведение журнала и отслеживание • Управление транзакциями • Статистика заданий • Управление процессом; например, путем перезапуска заданий, пропуска шагов и управления ресурсами • Веб-консоль администрирования

Эта платформа предназначена для управления большим объемом данных и обеспечения высокопроизводительных пакетных процессов с использованием функций разделов. В этой статье будет рассмотрен простой проект, объясняющий каждый основной компонент Spring Batch. Как упоминалось в документации по весенней партии (https://docs.spring.io/spring-batch/trunk/reference/html/spring-batch-intro.html), наиболее распространенными сценариями использования фреймворка являются следующие:

• Периодическое выполнение пакетных процессов • Параллельная пакетная обработка для параллельной обработки задания • Поэтапная обработка корпоративных сообщений на основе • Большая параллельная пакетная обработка • Ручной или запланированный перезапуск после сбоев • Последовательная обработка зависимых шагов (с расширениями для пакетов, управляемых рабочим процессом) • Частичная обработка: Пропускать записи (например, при откате) • Транзакция всего пакета: Для случаев с небольшим размером пакета или существующими хранимыми процедурами/сценариями

В корпоративных приложениях очень часто возникает необходимость обрабатывать миллионы записей (данных) или считывать их из источника. Этот источник может содержать большие файлы с несколькими записями (например, файлы CSV или TXT) или таблицы базы данных. Для каждой из этих записей обычно применяется некоторая бизнес-логика, выполняются проверки или преобразования и завершается задача, записывая результат в другой выходной формат (например, в базу данных или файл).

Spring Batch предоставляет полную основу для реализации такого рода требований, сводя к минимуму взаимодействие с людьми.

Вы ознакомитесь с основными концепциями Spring batch:

• Задание инкапсулирует пакетный процесс и должно состоять из одного или нескольких шагов. Каждый шаг может выполняться последовательно, параллельно или быть разделен. • Шаг – это последовательная фаза работы. • * JobLauncher отвечает за выполнение задания, которое выполняется. • Хранилище заданий – это хранилище метаданных выполнения задания.

Создайте простой пример задания с использованием пакета Spring, чтобы понять, как оно работает. Во-первых, создайте простой проект Java и включите зависимость spring-batch. Для этого создайте приложение Spring Boot, используя его инициализатор (https://start.spring.io), как показано на следующем скриншоте:

Для этого создайте приложение Spring Boot, используя его инициализатор (https://start.spring.io), как показано на следующем скриншоте:

Добавьте зависимость для пакета Spring. Вы можете сделать это, введя Spring Batch в строку поиска в поле зависимости и нажав на Ввод. В разделе “Выбранные зависимости” появится зеленое поле со словом “Пакет”. Когда это будет сделано, нажмите на кнопку Создать проект.

Структура проекта будет следующей:

Структура проекта будет следующей:

Если вы посмотрите на раздел зависимостей, добавленный инициализатором, вы увидите стартер spring-batch на pom.xml файл, следующий:


org.springframework.boot
spring-boot-starter-batch


org.springframework.boot
spring-boot-starter-test
test


org.springframework.batch
spring-batch-test
test

Если вы не используете Spring Boot, вы можете явно добавить spring-batch-core в качестве зависимости проекта. Ниже показано, как это выглядит с помощью Maven:<зависимости> <зависимость> <Идентификатор группы>org.springframework.batch группы> <артифактИд>ядро spring-batch <версия>4.0.1.РЕЛИЗ . группы> <артифактИд>ядро spring-batch <версия>4.0.1.РЕЛИЗ . В качестве альтернативы вы можете сделать это с помощью Gradle:зависимости{ компиляция ‘org.springframework.batch:spring-batch-ядро:4.0.1.РЕЛИЗ’}

Проекту потребуется источник данных; если вы попытаетесь запустить приложение без него, в консоли появится сообщение об ошибке:

Проекту потребуется источник данных; если вы попытаетесь запустить приложение без него, в консоли появится сообщение об ошибке:

Чтобы устранить эту проблему, добавьте зависимость как часть pom.xml файл, для настройки встроенного источника данных. В целях тестирования используйте HSQL (http://hsqldb.org/):


org.hsqldb
hsqldb
runtime


Теперь вам нужно добавить аннотации @Enablebatchprocessing и @Configuration в приложение:

@SpringBootApplication
@EnableBatchProcessing
@Configuration
public class SimpleBatchApplication {

Затем настройте свое первое задание с помощью класса Фабрики сборки заданий с одним процессом задачи на основе пакета Spring, используя класс StepBuilderFactory:

@Autowired
privateJobBuilderFactoryjobBuilderFactory;

@Autowired
privateStepBuilderFactorystepBuilderFactory;

Затем метод задания покажет, что он запускается:

@Bean
public Job job(Step ourBatchStep) throws Exception {
returnjobBuilderFactory.get("jobPackPub1")
         .incrementer(new RunIdIncrementer())
         .start(ourBatchStep)
         .build();
}

Как только задание будет создано, добавьте в него новую задачу (Шаг):

@Bean
public Step ourBatchStep() {
returnstepBuilderFactory.get("stepPackPub1")
         .tasklet(new Tasklet() {
publicRepeatStatus execute(StepContribution contribution, 
ChunkContextchunkContext) {
return null;
  
            }
         })
         .build();
}

Следующий код показывает, как выглядит класс приложения:

@EnableBatchProcessing
@SpringBootApplication
@Configuration
public class SimpleBatchApplication {

public static void main(String[] args) {
SpringApplication.run(SimpleBatchApplication.class, args);
   }

@Autowired
privateJobBuilderFactoryjobBuilderFactory;

@Autowired
privateStepBuilderFactorystepBuilderFactory;

@Bean
public Step ourBatchStep() {
returnstepBuilderFactory.get("stepPackPub1")
            .tasklet(new Tasklet() {
publicRepeatStatus execute
                (StepContribution contribution, 
ChunkContextchunkContext) {
return null;
               }
            })
            .build();
   }

@Bean
public Job job(Step ourBatchStep) throws Exception {
returnjobBuilderFactory.get("jobPackPub1")
            .incrementer(new RunIdIncrementer())
            .start(ourBatchStep)
            .build();
   }
}

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

$ mvnspring-boot:run

В качестве альтернативы вы можете создать приложение, запустив Maven:

$ mvn install

Затем запустите свою недавно созданную банку на терминале:

$ java -jar target/simple-batch-0.0.1-SNAPSHOT.jar

Наконец, вы увидите следующий вывод в консоли:

Наконец, вы увидите следующий вывод в консоли:

Обратите внимание на вывод консоли. Для этого запустите задание с именем jobPackPub1 и выполните компонент как stepPackPub1.Теперь более подробно рассмотрим компоненты, лежащие в основе следующих шагов: • Средство чтения элементов представляет извлечение входных данных для шага • Средство обработки элементов представляет бизнес-обработку элемента • Средство записи элементов представляет вывод шага

На следующей диаграмме показана общая картина основных элементов Spring Batch:

На следующей диаграмме показана общая картина основных элементов Spring Batch:

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

Если вы нашли эту статью интересной, вы можете изучить Архитектуру программного обеспечения с Spring 5.0 для получения информации о наиболее распространенных архитектурных моделях, а также о том, когда и где их можно использовать. Архитектура программного обеспечения с Spring 5.0 подробно объясняет, как выбрать правильную архитектуру и применять лучшие практики во время цикла разработки программного обеспечения, чтобы избежать технических долгов и поддерживать все бизнес-требования.

Оригинал: “https://www.codementor.io/@packt/spring-batch-qcjxsuu3e”