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 # 실시간 로그 스트리밍 코스피 8% 폭락, 서킷브레이커 발동, SK텔레콤 Claude AI 차단까지. 한국의 AI 레버리지 버블이 단 하루…
SNS 사진 1장으로 30초 만에 딥페이크 영상이 완성됩니다. 당신의 얼굴이 이미 범죄에 악용되고 있을 수…
SNS 사진 1장으로 30초 만에 딥페이크 영상이 완성됩니다. 당신의 얼굴이 이미 범죄에 악용되고 있을 수…
달러/원 환율이 급등하는 이유와 실생활 영향을 정리했습니다. 지금 당장 활용할 수 있는 환전·투자 대응 전략까지…
미래에셋·미래에셋벤처투자·미래에셋생명이 동반 급등한 이유는 스페이스X 상장 기대감입니다. 세 회사가 스페이스X와 어떻게 연결되어 있는지 상세히 분석했습니다.
스페이스X 상장이 계속 미뤄지는 진짜 이유를 파헤쳤습니다. 화성 계획, 스타링크 분리, 국방 계약... 머스크가 절대…