욱'S 노트

Spring XD - 어플리케이션 설정 본문

Programming/Spring XD

Spring XD - 어플리케이션 설정

devsun 2015. 1. 29. 14:07

소개


Spring XD는 설정할 수 있는 두 가지 주요 부문이 있다. 서버와 모듈이다. 서버(xd-singlenode, xd-admin, xd-container)는 Spring Boot 어플리케이션이고, 설정하는 방법은 Spring Boot Reference를 참조하기 바란다. YAML 기반의 설정 파일 servers.yml을 수정하는 것이 가장 단순한 케이스이다. servers.yml 설정 파일의 값들은 XD jar에 포함되어 있는 디폴트 application.yml 파일의 값들을 오버라이트 한다.



서버 설정


모듈 설정


모듈은 이름과 타입에 기초한 내포된 디렉토리 구조에 프로퍼티 파일을 위치함으로써 설정할 수 있다. 내포된 디렉토리 구조는 루트는 기본적으로 $XD_HOME/config/modules이다. 이 위치는 OS 환경변수 XD_MODULE_CONFIG_LOCATION에 의해 변경될 수 있다. 만약 XD_MODULE_CONFIG_LOCATION이 명시적으로 세팅되었다면 패스의 끝에 file path separator("/")를 붙일 필요가 있다.


예를 들어 twittersearch 모듈을 설정하기를 원한다면 다음과 같은 경로에 파일을 만들어야 한다.


XD_MODULE_CONFIG_LOCATION\source\twittersearch\twittersearch.properties


그리고 파일의 내용은 consumerKey와 consumerScret 같은 프로퍼티명을 포함한다. 


모듈 프로퍼티 파일을 다양한 방법이 있다.


1. stream이나 job DSL 정의에서 명시 될수 있다.

2. 자바 시스템 프로퍼티

3. OS 환경 변수

4. XD_MODULE_CONFIG_LOCATION/<type>/<name>/<name>.properties

5. 모듈 메타데이터의 명시된 디폴트 값


XD_MODULE_CONFIG_LOCATION/<type>/<name>/<name>.properties의 값은 다른 리소스 위치에 정의된 키를 참조하기 위한 프로퍼티 플레이스홀더일 수 있다. 디폴트로 제공되는 리소스는 XD_MODULE_CONFIG_LOCATION/modules.yml이다. 서버 실행 스크립트를 실행하기 전에 XD_MODULE_CONFIG_NAME OS 환경변수를 세팅함으로써 변경할 수 있다.


modules.yml 파일은 다른 모듈에서 공유할 수 키의 값을 명시할 수 있다. 예를들어 같은 트위터 개발자 인증을 공통으로 사용하기 위해 modules.yml에 다음과 같이 정의한다.

sharedConsumerKey: alsdjfqwopieur

sharedConsumerSecret: pqwieouralsdjkqwpo

sharedAccessToken: llixzchvpiawued

sharedAccessTokenSecret: ewoqirudhdsldke


그리고 XD_MODULE_CONFIG_LOCATION\source\twitterstream\twitterstream.properties에서는 아래와 같이 사용한다.

consumerKey=${sharedConsumerKey}

consumerSecret=${sharedConsumerSecret}

accessToken=${sharedAccessToken}

accessTokenSecret=${sharedAccessTokenSecret}

 

모듈 정의시 프로파일을 활용할 수 있다. 스프링 프로파일이 주어졌을때 네이밍 규칙 <name>-{profile}.properties에 기초하여 정확한 프로퍼티를 로딩 시킨다. 예를 들어 OS 환경변수 spring_profiles_active=default,qa가 주어졌다면 다음과 같은 순서 설정파일을 찾는다.


  1. XD_MODULE_CONFIG_LOCATION\source\twittersearch\twittersearch.properties

  2. XD_MODULE_CONFIG_LOCATION\source\twittersearch\twittersearch-default.properties

  3. XD_MODULE_CONFIG_LOCATION\source\twittersearch\twittersearch-qa.properties

공유된 모듈 설정 파일도 마찬가지이다.

1. XD_MODULE_CONFIG_LOCATION\modules.yml
2. XD_MODULE_CONFIG_LOCATION\modules-default.yml 
3. XD_MODULE_CONFIG_LOCATION\modules-qa.yml


또 다른 공통 케이스는 작업이나 JDBC Sink 모듈에서 데이터베이스를 접근하는 예제이다. 예를 들어 jdbchdfs 배치작업은 프로퍼티를 제공하기 위해 XD_MODULE_CONFIG_LOCATION\job\jdbchdfs\jdbchdfs.properites 파일을 제공한다.


driverClass=org.hsqldb.jdbc.JDBCDriver

url=jdbc:hsqldb:mem:xd

username=sa

password=



'Programming > Spring XD' 카테고리의 다른 글

Spring XD - 아키텍처  (0) 2015.01.30
Spring XD - DSL  (0) 2015.01.30
Spring XD - 분산모드 시작하기  (0) 2015.01.29
Spring XD - 시작하기  (0) 2015.01.29
Spring XD - 소개  (0) 2015.01.29
Comments