본문 바로가기

Java/Vert.x

버텍스 코어: 버티클 배포 옵션(DeploymentOptions)을 사용한 환경 설정 배포

더보기

DeploymentOptions 객체를 사용하면 버티클 배포 옵션을 지정 할 수 있습니다.

배포 옵션 중 setConfig() 메소드는 배포되는 버티클에 공통의 JSON 객체를 전달합니다.

버텍스 애플리케이션을 작성할 때 환경 설정을 읽어와 서버에 로드하는 시나리오를 가정합니다.

가장 간단한 방법은 환경 설정 파일을 디스크로부터 읽어오는 방법입니다.

버텍스 애플리케이션은 여러 개의 버티클 인스턴스를 배포하는데, 각 인스턴스는 별도의 메모리를 갖기 때문에 각자 디스크를 읽어야 합니다.

DeploymentOptions를 사용한 JSON 객체 배포

DeploymentOptions 객체의 setConfig() 메소드는 배포되는 버티클에 JsonObject 객체를 전달합니다.

DeploymentOptions options = new DeploymentOptions();
options.setConfig(new JsonObject());

버티클이 배포되는 단계에서 처리되므로 환경 설정으로 전달되는 JsonObject 객체는 한 번만 작성하면 됩니다.

public class Launcher extends AbstractVerticle 
{
	@Override
	public void start(Promise<Void> _prom) 
    {
		JsonObject configs = new JsonObject()
			.put("lang", "ko")
			.put("date", "2022-01-31")
			.put("name", "this-is-test-server");
	
		DeploymentOptions options = new DeploymentOptions();
		options.setConfig(configs);
		vertx.deployVerticle(MyVerticle.class.getName(), options, ar -> {
			if (ar.failed()) {
				ar.cause().printStackTrace();
			}
		});
        
		_prom.complete();
	}
    
	public static class MyVerticle extends AbstractVerticle 
	{
		@Override
		public void start(Promise<Void> _prom) 
        {
			System.out.println(config().encodePrettily());
//			{
//				"lang" : "ko",
//				"date" : "2022-01-31",
//				"name" : "this-is-test-server"
//			}

			_prom.complete();
		}
	}
}

 

코드 비고
Line 11:13 setConfig() 사용한 환경 설정 배포 버티클을 배포하기 앞서 DeploymentOptions 객체에 setConfig()를 사용하여 JSON 객체를 저장합니다.
저장된 객체는 버티클이 배포되며 해당 버티클 인스턴스에서 읽어 올 수 있습니다.
Line 27 버티클에서 환경 설정 로드 배포된 버티클은 config() 메소드를 호출하여 배포 단계에서 저장된 JSON 객체를 로드합니다.

외부 JSON 파일을 사용한 환경

외부 파일을 로드하여 JSON 환경 설정을 생성하고 버티클에 공통으로 배포하는 예제입니다.

임의의 디렉토리에 JSON 확장자를 갖는 텍스트 파일을 생성하고 다음 내용을 입력합니다.

{
	"lang" : "ko",
	"date" : "2022-01-31",
	"name" : "this-is-test-server"
}

IDE에서 자바 프로젝트 실행을 위한 Program Arguments를 수정합니다.

-conf 태그 뒤에 앞서 생성한 텍스트 파일의 절대 경로를 입력합니다.

run {실행 버티클 패키지 경로 및 버티클 클래스 이름} -conf {환경 설정 파일 경로 및 이름}

이제 Vertx 객체의 config() 메소드를 호출하여 -conf 태그 뒤에 지정한 텍스트 파일(JSON 데이터)을 로드 할 수 있습니다.

DeploymentOptions options = new DeploymentOptions();
options.setConfig(config());

버티클을 배포할 때는 DeploymentOptions를 사용하여 환경 설정을 배포합니다.

public class Launcher extends AbstractVerticle 
{
	@Override
	public void start(Promise<Void> _prom) 
    {
		System.out.println(config().encodePrettily());
//		{
//			"lang" : "ko",
//			"date" : "2022-01-31",
//			"name" : "this-is-test-server"
//		}

		DeploymentOptions options = new DeploymentOptions();
		options.setConfig(config());
		vertx.deployVerticle(MyVerticle.class.getName(), options, ar -> {
			if (ar.failed()) {
				ar.cause().printStackTrace();
			}
		});
        
		_prom.complete();
	}
    
	public static class MyVerticle extends AbstractVerticle 
    {
		@Override
		public void start(Promise<Void> _prom) 
        {
			System.out.println(config().encodePrettily());
//			{
//				"lang" : "ko",
//				"date" : "2022-01-31",
//				"name" : "this-is-test-server"
//			}

			_prom.complete();
		}
	}
}
코드 비고
Line 13:15 setConfig() 사용한 환경 설정 배포 이때 배포되는 환경 설정은 외부 JSON 파일에서 로드 된 JSON 데이터입니다.

정리 및 복습

  • 버티클 배포 옵션(DeploymentOptions)의 setConfig() 메소드를 호출하여 버티클 배포 시 환경 설정을 전달 할 수 있습니다.
  • 배포된 버티클은 config() 메소드를 호출하여 배포된 환경 설정을 로드합니다.
  • 자바 실행 시 Program Arguments에서 -conf 태그를 사용하여 외부 텍스트 파일을 JSON 데이터로 로드 할 수 있습니다.