Apache Camel에서 모든 데이터는 Exchange 라는 컨테이너 안에 담겨 라우트를 통해 흐릅니다. Exchange를 이해하는 것은 Camel 개발의 핵심입니다.
Message는 Camel에서 실제로 전달되는 데이터 단위입니다. 세 가지 요소로 구성됩니다.
// 메시지 조작 예시
.process(exchange -> {
Message msg = exchange.getIn();
String body = msg.getBody(String.class);
msg.setHeader("processed", true);
msg.setBody("처리된 데이터: " + body);
}) Exchange는 하나의 처리 단위로, 요청(In 메시지)과 응답(Out 메시지)을 함께 담습니다.
Exchange는 두 가지 패턴을 지원합니다.
// Exchange Pattern 확인
.process(exchange -> {
ExchangePattern pattern = exchange.getPattern();
System.out.println("MEP: " + pattern); // InOnly 또는 InOut
}) 헷갈리기 쉬운 Headers와 Properties의 차이점입니다.
// Properties 활용 예시
.setProperty("startTime", simple("${date:now:yyyy-MM-dd HH:mm:ss}"))
.delay(1000)
.log("시작 시각: ${exchangeProperty.startTime}") Camel은 자동 타입 변환을 지원합니다. getBody(String.class)처럼 원하는 타입을 지정하면 자동으로 변환해줍니다.
// 자동 타입 변환
String text = exchange.getIn().getBody(String.class);
byte[] bytes = exchange.getIn().getBody(byte[].class);
InputStream is = exchange.getIn().getBody(InputStream.class); 다음 글에서는 Camel의 전체 아키텍처를 더 넓은 시각에서 살펴봅니다.
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 코드와 함께 한 번에 정리합니다. 메시징 채널, 메시지 라우팅,…