Обработка пакетов с потоком данных весеннего облака
1. Обзор
В первый статьи серии, мы представили Весенний облачный поток данных архитектурная составляющая и как использовать ее для создания потокового конвейера данных.
В отличие от конвейера потока, где обрабатывается неограниченный объем данных, пакетный процесс упрощает создание недолговечных служб, в которых задачи выполняются по требованию .
2. Локальный сервер потока данных и оболочка
Локальный сервер потока данных является компонентом, который отвечает за развертывание приложений, в то время как Оболочка потока данных позволяет нам для выполнения команд DSL, необходимых для взаимодействия с сервером.
В предыдущая статья , мы использовали Весенний Инитилицр установить их оба вверх как применение загрузки весны.
После добавления @EnableDataFlowServer аннотация к серверная основной класс и @ ВключитьDataFlowShell аннотация к основному классу оболочки соответственно, они готовы к запускам, выполняя:
mvn spring-boot:run
Сервер загрузится в порт 9393, и оболочка будет готова взаимодействовать с ним с помощью подсказки.
Вы можете обратиться к предыдущей статье для получения подробной информации о том, как получить и использовать Локальный сервер потока данных и его оболочки клиента.
3. Пакетная заявка
Как и в случае с сервером и оболочкой, мы можем использовать Весенний Инитилицр создать корень Весенняя загрузка пакетной заявки.
После достижения веб-сайт, просто выбрать Групповой , Артефакт имя и выберите Облачное целевое из окна поиска зависимостей.
Как только это будет сделано, нажмите на Создание проектных кнопку, чтобы начать загрузку артефакта Maven.
Артефакт поставляется с предустановки и с основным кодом. Давайте посмотрим, как редактировать его для того, чтобы построить наш пакет приложений.
3.1. Зависимость от Maven
Прежде всего, давайте добавим пару зависимостей Maven. Поскольку это пакетная заявка, мы должны импортировать библиотеки из Весенний пакет проекта :
org.springframework.boot spring-boot-starter-batch
Кроме того, поскольку задача Spring Cloud Task использует реляционную базу данных для хранения результатов выполненной задачи, нам необходимо добавить зависимость к драйверу RDBMS:
com.h2database h2
Мы решили использовать базу данных памяти H2, предоставленную Spring. Это дает нам простой метод развития загрузки. Тем не менее, в рабочей среде, вы хотите, чтобы настроить свой собственный ДанныеИсточник .
Имейте в виду, что версии артефактов будут унаследованы от родительской программы Spring Boot пом.xml файл.
3.2. Основной класс
Ключевым моментом для обеспечения желаемой функциональности было бы добавить @EnableTask и @EnableBatchProcessing аннотации к Весенняя бутса основной класс. Эта аннотация уровня класса говорит Весеннее Облако Задача загрузки все:
@EnableTask @EnableBatchProcessing @SpringBootApplication public class BatchJobApplication { public static void main(String[] args) { SpringApplication.run(BatchJobApplication.class, args); } }
3.3. Конфигурация работы
Наконец, давайте настраивать работу – в данном случае простой отпечаток Струнные в файл журнала:
@Configuration public class JobConfiguration { private static Log logger = LogFactory.getLog(JobConfiguration.class); @Autowired public JobBuilderFactory jobBuilderFactory; @Autowired public StepBuilderFactory stepBuilderFactory; @Bean public Job job() { return jobBuilderFactory.get("job") .start(stepBuilderFactory.get("jobStep1") .tasklet(new Tasklet() { @Override public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception { logger.info("Job was run"); return RepeatStatus.FINISHED; } }).build()).build(); } }
D etails о том, как настройка и определение задания выходят за рамки данной статьи. Для получения дополнительной информации, вы можете увидеть наши Введение в весенний пакет статья.
Наконец, наша заявка готова. Давайте установим его в нашем местном хранилище Maven. Для этого cd в корневой каталог проекта и выдать команду:
mvn clean install
Теперь пришло время поместить приложение в Сервер потока данных.
4. Регистрация заявки
Чтобы зарегистрировать приложение в реестре приложений, нам необходимо предоставить уникальное имя, тип приложения и URI, которые могут быть решены с артефактом приложения.
Иди в Оболочка потока данных весеннего облака и выдать команду из подсказки:
app register --name batch-job --type task --uri maven://com.baeldung.spring.cloud:batch-job:jar:0.0.1-SNAPSHOT
5. Создание задачи
Определение задачи может быть создано с помощью команды:
task create myjob --definition batch-job
Это создает новую задачу с именем моя работа указывая на ранее зарегистрированное заявление о вакансии.
Перечисление текущих определений задач можно получить с помощью команды:
task list
6. Запуск задачи
Для запуска задачи мы можем использовать команду:
task launch myjob
После запуска задачи состояние задачи хранится в реляционной DB. Мы можем проверить состояние выполнения нашей задачи с помощью команды:
task execution list
7. Рассмотрение результатов
В этом примере задание просто печатает строку в файле журнала. Файлы журнала расположены в каталоге, отображаемом в Сервер потока данных Выход журнала.
Чтобы увидеть результат, мы можем следить за журналом:
tail -f PATH_TO_LOG\spring-cloud-dataflow-2385233467298102321\myjob-1472827120414\myjob [...] --- [main] o.s.batch.core.job.SimpleStepHandler: Executing step: [jobStep1] [...] --- [main] o.b.spring.cloud.JobConfiguration: Job was run [...] --- [main] o.s.b.c.l.support.SimpleJobLauncher: Job: [SimpleJob: [name=job]] completed with the following parameters: [{}] and the following status: [COMPLETED]
8. Заключение
В этой статье мы показали, как бороться с обработкой партий с помощью Весенний облачный поток данных .
Пример кода можно найти в Проект GitHub .