Guide_Spring Cloud Task

Dev.Hammy·2024년 1월 30일
0

Spring Guides

목록 보기
41/46

Getting Started with Spring Cloud Task

스프링 클라우드 태스크란?

Spring Cloud Task는 일괄 데이터 처리 작업(batch data processing)과 같은 단기 Spring Boot 마이크로서비스를 구축하기 위한 프레임워크입니다. 프로젝트 사이트, 문서 및 샘플에서 프레임워크에 대해 자세히 알아볼 수 있습니다.

태스크 애플리케이션 개요

이 가이드에서는 Spring Cloud Task를 사용하는 Spring Boot 애플리케이션을 개발하고 이를 로컬 머신에 배포합니다. 처음에는 Spring Cloud Task 기능을 시연하기 위해 H2 데이터베이스를 사용하지만 Spring Cloud Task의 가치는 실행된 작업의 결과를 영구 데이터 저장소(persistent data store)에 저장하는 기능에 있습니다. 이 예에서는 MariaDB를 영구 데이터 저장소로 사용하여 진행합니다.

Spring Cloud Task using In Memory H2

첫 번째 단계에서는 H2 데이터 저장소가 내장된 Spring Cloud Task를 사용합니다. 프로젝트 초기화 시 spring.datasource 속성이 감지되지 않으면 Spring Cloud Task는 새 H2 인스턴스를 가동하여 실행된 작업 결과를 저장합니다. 이는 추가 구성(configuration) 없이 발생합니다. 이렇게 하면 빠르게 시작하고 실행할 수 있지만 애플리케이션이 완료되고 H2 데이터베이스가 종료되면 실행된 작업의 결과가 손실됩니다. 가이드의 이 단계에서는 application.properitesspring.datasource 속성이 주석(comment) 처리되어 있는지 확인하세요.

TaskApplication

import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.task.configuration.EnableTask;
import org.springframework.cloud.task.listener.annotation.AfterTask;
import org.springframework.cloud.task.listener.annotation.BeforeTask;
import org.springframework.cloud.task.repository.TaskExecution;
import org.springframework.context.annotation.Bean;

@SpringBootApplication
@EnableTask
public class TaskApplication {

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

    @Bean
    public CommandLineRunner commandLineRunner() {
        return new HelloWorldCommandLineRunner();
    }

    @BeforeTask
    public void beforeMethod(TaskExecution taskExecution) {
        System.out.println("Before task");
    }

    @AfterTask
    public void afterMethod(TaskExecution taskExecution) {
        System.out.println("After task");
    }

    public static class HelloWorldCommandLineRunner implements CommandLineRunner {

        @Override
        public void run(String... args) throws Exception {
            System.out.println("Hello Spring Cloud Task!");
        }
    }
}

영구 MariaDB를 사용하는 Spring Cloud 작업

단기 작업보다 오래 지속되는 데이터를 유지하려면 외부에서 사용 가능한 데이터 저장소가 필요합니다. 이 가이드에서는 Docker 컨테이너에서 실행되는 MariaDB 인스턴스를 사용합니다.

메모
이 가이드를 따르려면 Docker를 로컬에서 실행해야 합니다.

MariaDB를 로컬로 실행하려면 다음 명령을 실행하십시오.

docker run -p 3306:3306 --name mariadb -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=task -d mariadb:latest

MariaDB 인스턴스가 실행 중이면 application.properties를 통해 애플리케이션에 구성을 제공합니다.

spring.datasource.url=jdbc:mariadb://localhost:3306/task
spring.datasource.username=root
spring.datasource.password=password
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver

이제 애플리케이션을 다시 실행하면 MariaDB 인스턴스 내부에 작업 실행 결과가 저장됩니다. Docker 컨테이너에 셸을 가져와 이를 확인할 수 있습니다.

docker exec -it mariadb mariadb --user root -ppassword

그런 다음 명령을 실행하십시오.

use task;
show tables; --show all tables that Spring Cloud Task created
select * from task_execution;

MariaDB 인스턴스가 실행되는 동안 실행한 모든 프로그램 실행을 볼 수 있어야 합니다.

도커로 마리아 디비를 열어놓은 상태로 다시 애플리케이션을 실행하면 이미 테이블이 존재한다며 에러메시지가 나온다.

도커에서 마리아디비를 확인하면 방금 실행한 내용이 반영되어 있음을 알 수 있다.

요약
축하해요! Spring Cloud Task의 상위 수준 개요를 완료했으며 Spring Cloud Task 애플리케이션을 빌드, 테스트 및 시작할 수 있었습니다.

0개의 댓글