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}원
감사합니다. 2025년 Apache Camel의 최신 트렌드를 분석합니다. AI/LLM 통합 컴포넌트, 서버리스 배포, Camel K 진화, WebAssembly…
Camel in Action을 완독한 후 Apache Camel의 전체 그림을 다시 정리합니다. 핵심 철학, 학습 경로,…
Apache Camel 2.x에서 3.x, 4.x로 마이그레이션하는 단계별 가이드입니다. 주요 API 변경사항, 제거된 컴포넌트, 자동화 도구…
Apache Camel 라우트에서 발생하는 문제를 디버깅하고 해결하는 실전 기법을 설명합니다. 로그 분석, breakpoint 디버깅, Tracer,…
Apache Camel을 프로젝트에 도입하기 전 알아야 할 핵심 사항을 정리합니다. 학습 곡선, 도입 비용, 적합한…
엔터프라이즈 통합 패턴(EIP) 20가지를 Apache Camel 코드와 함께 한 번에 정리합니다. 메시징 채널, 메시지 라우팅,…