Java DSL은 강력하지만 개발자가 아닌 사람이 이해하기 어렵습니다. YAML DSL은 비개발자도 읽을 수 있는 선언적 형식으로 라우트를 정의합니다. Groovy 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 파일을 직접 Kubernetes에 배포합니다.
# kamel CLI로 YAML 라우트 배포
kamel run routes.yaml
# 실시간 수정 및 반영
kamel run routes.yaml --dev 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());
}
});
} 메시지 내용을 동적으로 생성할 때 템플릿 언어를 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}원
감사합니다. AI 감시 소프트웨어가 재택근무 시대를 끝내고 있다. 직원의 키스트로크·화면·표정까지 추적하는 기술의 실체와, 한국 직장인이 알아야…
정보보안기사 실기는 개념을 아는 것보다 로그를 읽고, 규칙을 쓰고, 계산하는 힘에서 점수가 갈립니다. 이번 글은…
호르무즈 해협 뉴스는 이제 '또 공격이 있었다'보다 '얼마나 늘었나'를 봐야 합니다. 이투데이가 FT와 영국해사무역기구(UKMTO) 등을…
이번 추석 연휴, 은행들은 쉬지 못했습니다. 연휴 기간 금융권에서 대규모 개인정보 유출 사고가 터졌기 때문입니다.…
"집 못 팔게 막으면 값이 내려가겠지." 서울 전역이 토지거래허가구역으로 묶이던 1년 전, 이런 기대가 있었습니다.…
다섯 거래일 연속 밀린 코스피가 오늘 아침 크게 반등했습니다. 오전 9시 12분 기준 6,165.02로 전…