Автор оригинала: 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. Вы можете сделать это, введя 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.
Если вы нашли эту статью интересной, вы можете изучить Архитектуру программного обеспечения с Spring 5.0 для получения информации о наиболее распространенных архитектурных моделях, а также о том, когда и где их можно использовать. Архитектура программного обеспечения с Spring 5.0 подробно объясняет, как выбрать правильную архитектуру и применять лучшие практики во время цикла разработки программного обеспечения, чтобы избежать технических долгов и поддерживать все бизнес-требования.
Оригинал: “https://www.codementor.io/@packt/spring-batch-qcjxsuu3e”