2013-06-05 3 views
2

응용 프로그램이 거부 할 수있는 메시지의 종류에 대한 좋은 모범 사례가 있습니까?DLQ/잘못된 메시지 큐에 속하는 것은 무엇입니까?

문제는 구문 오류 또는 메시지의 의미 오류에 상관없이 또는 응용 프로그램이 일시적으로 수행 할 수없는 경우 처리 할 수없는 모든 메시지를 배달 불능 큐로 거부해야합니다. 메시지를 처리하십시오 (예를 들어, db가 방금 내려 갔기 때문에).

물론 - 앱이 이미 메시지 (DB 다운)를 처리 할 수 ​​없다는 것을 이미 알고 있다면 메시지 수신을 중단해야합니다.

그럼 일반적인 이해/권장 사항은 무엇입니까?

답변

3

내 응답하여 WebSphere MQ에 대한 것입니다 :

죽은 편지 대기열 (줄여서 DLQ하는 것은) 자신의 목적지로 전달 될 수없는 메시지를 넣어 장소입니다. 메시지는 큐 관리자, 메시지 채널 에이전트 (MCA) 및 어플리케이션에 의해 DLQ에 놓일 수 있습니다. DLQ의 모든 메시지 앞에는 데드 - 레터 헤더 구조 인 MQDLH가 있어야합니다. MQDLH 헤더는 큐 관리자 또는 MCAs가 메시지를 넣을 때 자동으로 고정되는 반면 응용 프로그램은 MQDLH에 명시 적으로 접두사를 붙여야합니다.

응용 프로그램과 관련하여 메시지를 처리 ​​할 수없는 경우, 예를 들어 메시지 형식을 이해하지 못한 경우 메시지를 DLQ 대신 BACKOUT 큐에 넣을 수 있습니다. BACKOUT 대기열은 응용 프로그램에서 거부 된 메시지를 넣을 수있는 일반 대기열과 같습니다. BACKOUT 대기열의 장점은 대기열별로 BACKOUT 대기열을 지정할 수 있고 MQDLH 헤더 접두사가 필요없는 메시지를 넣을 필요가 없다는 것입니다.

응용 프로그램은 BACKOUT의 메시지를 읽고 대상 큐에 그대로 다시 라우팅하도록 작성할 수 있습니다. 그러나 DLQ의 메시지는 대상 큐에 넣기 전에 MQDLH를 제거하기 위해 추가 처리가 필요합니다.

+0

소리가 좋습니다. ActiveMQ를 사용하면 대기열별로 DLQ를 구성 할 수 있습니다. – rdmueller

관련 문제