더보기
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 | 버티클에서 환경 설정 로드 | 배포된 버티클은 |
외부 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 데이터로 로드 할 수 있습니다.
'Java > Vert.x' 카테고리의 다른 글
버텍스 코어: 타이머(One-shot timers, Periodic timers) (0) | 2022.02.01 |
---|---|
버텍스 코어: 컨텍스트(Context) (0) | 2022.02.01 |
버텍스 코어: JSON 사용을 위한 JsonObject (0) | 2022.01.31 |
버텍스 코어: 배포 옵션(DeploymentOptions)을 사용하여 버티클 배포 인스턴스 확보 (0) | 2022.01.31 |
버텍스 코어: 버티클 팩토리(Verticle Factory) (0) | 2022.01.31 |