Camel 라우트는 여러 컴포넌트와 외부 시스템을 넘나들어 실행됩니다. 일반적인 Java 디버거로는 메시지가 어느 단계에서 어떻게 변형됐는지 추적하기 어렵습니다. Camel이 제공하는 전용 디버깅 도구를 사용하면 훨씬 효과적입니다.
가장 단순하고 효과적인 방법은 각 처리 단계 사이에 log를 추가하는 것입니다.
from("direct:order")
.log("1단계 수신: ${body}")
.to("bean:validator")
.log("2단계 검증 후: body=${body}, headers=${headers}")
.process(exchange -> orderMapper.convert(exchange))
.log(LoggingLevel.DEBUG, "com.example.OrderRoute", "3단계 변환 후: ${body}")
.to("activemq:queue:orders"); 로거 이름을 지정하면 application.properties에서 특정 라우트만 DEBUG 레벨로 설정할 수 있습니다.
Tracer를 활성화하면 라우트의 모든 단계에서 Exchange 상태를 자동으로 기록합니다. 개발 환경에서 유용합니다.
// application.properties
camel.springboot.tracing=true
logging.level.org.apache.camel=TRACE
// 또는 코드에서
context.setTracing(true); Camel의 BacklogDebugger를 사용하면 IntelliJ나 Eclipse에서 라우트에 브레이크포인트를 걸 수 있습니다.
// BacklogDebugger 활성화
BacklogDebugger debugger = context.getCamelContextExtension()
.getContextPlugin(BacklogDebugger.class);
debugger.enableDebugger();
// 특정 노드 ID에 브레이크포인트
debugger.addBreakpoint("myRoute-to1");
// 일시 정지된 Exchange 정보 조회
BacklogTracerEventMessage msg = debugger.dumpAsJaxb("myRoute-to1"); // Message History 활성화
context.setMessageHistory(true);
// 처리 후 이력 확인
List<MessageHistory> history = exchange.getProperty(
Exchange.MESSAGE_HISTORY, List.class);
for (MessageHistory h : history) {
System.out.printf("%s -> %s (%dms)%n",
h.getNode().getId(), h.getLabel(), h.getElapsed());
} # Camel JBang으로 실행 중인 Camel 애플리케이션 진단
jbang camel@apache/camel ps # 실행 중인 Camel 목록
jbang camel@apache/camel get route # 라우트 상태
jbang camel@apache/camel log # 실시간 로그 스트리밍 2025년 Apache Camel의 최신 트렌드를 분석합니다. AI/LLM 통합 컴포넌트, 서버리스 배포, Camel K 진화, WebAssembly…
Camel in Action을 완독한 후 Apache Camel의 전체 그림을 다시 정리합니다. 핵심 철학, 학습 경로,…
Apache Camel 2.x에서 3.x, 4.x로 마이그레이션하는 단계별 가이드입니다. 주요 API 변경사항, 제거된 컴포넌트, 자동화 도구…
Apache Camel을 프로젝트에 도입하기 전 알아야 할 핵심 사항을 정리합니다. 학습 곡선, 도입 비용, 적합한…
엔터프라이즈 통합 패턴(EIP) 20가지를 Apache Camel 코드와 함께 한 번에 정리합니다. 메시징 채널, 메시지 라우팅,…
Apache Camel의 Saga EIP로 분산 트랜잭션을 구현하는 완전한 가이드입니다. 보상 트랜잭션, 타임아웃 처리, Saga 상태…