Categories: Camel프레임워크

[Camel in Action] 17-2. Camel DSL 확장 – YAML DSL과 Groovy DSL 활용

다양한 DSL이 필요한 이유

Java DSL은 강력하지만 개발자가 아닌 사람이 이해하기 어렵습니다. YAML DSL은 비개발자도 읽을 수 있는 선언적 형식으로 라우트를 정의합니다. Groovy DSL은 스크립트 언어의 유연성을 활용해 동적 라우트를 간편하게 만들 수 있습니다.

YAML DSL – 선언적 라우트 정의

Camel 3.14부터 YAML DSL이 공식 지원됩니다. Java 코드 없이 YAML 파일만으로 완전한 라우트를 정의할 수 있습니다.

# routes.yaml
- route:
    id: hello-route
    from:
      uri: timer:hello
      parameters:
        period: 5000
    steps:
      - setBody:
          simple: "안녕하세요, ${date:now:HH:mm:ss}"
      - log:
          message: "${body}"

- route:
    id: http-route
    from:
      uri: rest:get:api/users
    steps:
      - to:
          uri: sql:SELECT * FROM users
      - marshal:
          json:
            library: Jackson

Camel K에서 YAML DSL 사용

Camel K 환경에서는 YAML 파일을 직접 Kubernetes에 배포합니다.

# kamel CLI로 YAML 라우트 배포
kamel run routes.yaml

# 실시간 수정 및 반영
kamel run routes.yaml --dev

Groovy DSL – 동적 라우트

Groovy는 간결한 문법과 동적 타입으로 복잡한 변환 로직을 짧게 표현할 수 있습니다.

// Groovy 스크립트로 변환 처리
from("direct:transform")
  .process { exchange ->
    def body = exchange.in.body
    def result = body.split(",").collect { it.trim().toUpperCase() }.join("|")
    exchange.in.body = result
  }
  .to("log:result");

동적 라우트 생성 – 런타임 라우트 추가

설정 데이터베이스에서 라우트 정의를 읽어 런타임에 동적으로 라우트를 추가하는 패턴입니다.

// DB에서 라우트 설정 읽어 동적 생성
List<RouteConfig> configs = routeConfigRepository.findAll();
for (RouteConfig config : configs) {
  context.addRoutes(new RouteBuilder() {
    @Override
    public void configure() throws Exception {
      from(config.getFrom())
        .routeId(config.getId())
        .to(config.getTo());
    }
  });
}

Mustache와 Freemarker 템플릿 DSL

메시지 내용을 동적으로 생성할 때 템플릿 언어를 DSL처럼 사용합니다.

// Freemarker 템플릿으로 이메일 본문 생성
from("direct:sendEmail")
  .to("freemarker:email-template.ftl")
  .to("smtp://mail.example.com?to=${header.emailTo}");
# email-template.ftl
안녕하세요, ${body.name}님!

주문 번호 ${body.orderId}가 접수되었습니다.
총 금액: ${body.amount}원

감사합니다.

zerg96

Share
Published by
zerg96

Recent Posts

재택근무 종말이 온다? AI 감시 소프트웨어가 사무실을 부활시키는 진짜 이유

AI 감시 소프트웨어가 재택근무 시대를 끝내고 있다. 직원의 키스트로크·화면·표정까지 추적하는 기술의 실체와, 한국 직장인이 알아야…

2시간 ago

정보보안기사 실기 합격을 가르는 10문제, 로그 분석부터 RSA 계산까지 풀이 포함

정보보안기사 실기는 개념을 아는 것보다 로그를 읽고, 규칙을 쓰고, 계산하는 힘에서 점수가 갈립니다. 이번 글은…

3시간 ago

호르무즈에서 2주간 선박 24척 피격, 원유 수송은 전쟁 전보다 43% 줄었다

호르무즈 해협 뉴스는 이제 '또 공격이 있었다'보다 '얼마나 늘었나'를 봐야 합니다. 이투데이가 FT와 영국해사무역기구(UKMTO) 등을…

3시간 ago

추석 연휴에 뚫린 은행들, 해외 법인 보안망까지 다시 짜는 이유

이번 추석 연휴, 은행들은 쉬지 못했습니다. 연휴 기간 금융권에서 대규모 개인정보 유출 사고가 터졌기 때문입니다.…

6시간 ago

서울 집값은 11% 올랐는데 거래는 17% 줄었다, 토허제 1년의 역설

"집 못 팔게 막으면 값이 내려가겠지." 서울 전역이 토지거래허가구역으로 묶이던 1년 전, 이런 기대가 있었습니다.…

6시간 ago

코스피 5연속 급락 뒤 2% 반등, 외국인·기관이 받쳤고 코스닥은 제자리

다섯 거래일 연속 밀린 코스피가 오늘 아침 크게 반등했습니다. 오전 9시 12분 기준 6,165.02로 전…

6시간 ago