2011-11-21 3 views
0

지금은 5 회 이상 롤백 된 메시지가 배달 불능 대기열로 보내지는 것과 같은 재 배달 정책이있는 JMS 대기열에서 작업하고 있습니다.DLQ 메시지의 클라이언트 예외 확인

메시지가 ActiveMQ의 Dead Letter Queue로 보내지는 경우 메시지 롤백을 유발 한 예외를 확인하는 방법이 있습니까? 메시지 오류의 원인을 지정하도록 설정할 수있는 메시지 속성이 있습니까?

답변

0

예외를 생성하는 상자의 로그를 조사해야합니다. DLQ로 보내지는 것은 말 그대로 전달할 수없는 메시지입니다.

+0

그렇습니다. 수행하는 AMQ 브로커가 메시지를 DLQ로 이동하는 경우 브로커는 클라이언트 등에서 발생한 스택 트레이스에 대해 전혀 알지 못합니다. –

4

당신은 AMQ 브로커의 죽은 편지 채널 기능 http://activemq.apache.org/message-redelivery-and-dlq-handling.html 를 사용하는 경우는, 위의 배달 할 수없는 말 그대로 단지 메시지를 대답한다. 중개인은 무엇이 잘못되었는지에 대한 지식이 없으며 메시지에서 '롤백'신호 만받습니다.

당신은 http://camel.apache.org/dead-letter-channel.html 다음 낙타가 AMQ 브로커에 실패한 메시지를 풍부하게하고, 죽은 레터 큐에 보낼 수있는 거래소에 속성으로 발생하는 예외를 저장하는 낙타의 죽은 편지 채널 기능을 사용하는 경우 . 따라서 AMQ가 메시지를 롤백하도록하는 대신 예외를 처리하고 메시지를 다른 대기열로 보냅니다.이 대기열은 데드 레터 대기열입니다. 그런 다음 Exchange 속성에서 스택 추적 및/또는 예외 메시지를 가져 와서 메시지, 헤더 등의 어딘가에 저장하여 메시지를 풍부하게 할 수 있습니다.

Camel은 catch 된 예외를 키로 Exchange의 속성으로 저장합니다. Exchange.EXCEPTION_CAUGHT

+1

아, 이름이 useOriginalMessage 인 you Camel의 데드 레터 채널 기능을 사용하는 경우 Camel 사이트에서 Google이 어떤 기능을 수행하는지 알아볼 수 있습니다. –

관련 문제