WebSphere MQ에서 JMSXDeliveryCount이 증가하는 조건은 무엇입니까? 일어날 수있는 모든 시나리오가 필요합니다.JMSXDeliveryCount가 증가한 경우
답변
고맙습니다. 답장 양식 웹을 가져 와서 여기에 붙여 넣어 다른 사람에게 도움이 될 수 있도록하십시오.
메시지가 사용자에게 전달 될 수있는 상황은 세션의 확인 모드에 따라 달라집니다 메시지를 소비자에게 전달했다 AUTO_ACKNOWLEDGE 또는 DUPS_OK_ACKNOWLEDGE 확인 모드를 선택
비 거래 세션을 할 때 응용 프로그램의 onMessage() 메서드는 예외를 throw합니다. 클라이언트 런타임에서 예외를 catch 한 다음 onMessage()를 다시 호출합니다. 예외는 캐치되어 Connection의 ExceptionListener에보고됩니다. 재전송 횟수를 제한하면 재전송 횟수가 제한됩니다. 아래 참고 사항을 참조하십시오.
SINGLE_MESSAGE_ACKNOWLEDGE 또는 CLIENT_ACKNOWLEDGE 확인 모드를 선택하는 트랜잭션이 아닌 세션은 응용 프로그램이 Session.recover()를 호출 할 때 메시지가 다시 전달됩니다.
TRANSACTED 확인 모드에서는 응용 프로그램이 트랜잭션을 롤백 할 때 메시지가 다시 전달됩니다.
응용 프로그램이 반복적으로 응용 프로그램이 실패하게하는 메시지를받는 루프를 반복적으로 수신 한 다음 동일한 메시지가 반복해서 전달됩니다. 무한 재 전달 루프를 때때로 "독이있는 메시지 시나리오"라고합니다.
- 재 배달 시도를 제한하려는 지점 간 (큐 기반) 소비자 클라이언트는 ConnectionFactory에 매개 변수를 지정하여 소비자에게 보내는 메시지 배달 횟수를 제한 할 수 있습니다. . 이것은 progress.message.jclient.ConnectionFactory.setMaxDeliveryCount (java.lang.Integer value) 메소드를 사용하여 수행됩니다. 값 0 (기본값)은 제한 없음을 나타냅니다.
재전송 제한을 초과했지만 확인되지 않은 메시지는 메시지에 지정된 등록 정보에 따라 처리되거나 폐기됩니다.
메시지 속성이 JMS_SonicMQ_preserveUndelivered true로 설정하면, 메시지가 SonicMQ.DeadMessage 큐 (또는 JMS_SonicMQ_destinationUndelivered 속성에 의해 지정된 대체 대상)에 배치되며, 메시지 속성 JMS_SonicMQ_undeliveredReasonCode이 오류 코드 진행으로 설정됩니다 .message.jclient.Constants.UNDELIVERED_DELIVERY_LIMIT_EXCEEDED. 'preserveUndelivered'속성을 설정하지 않으면 메시지가 삭제됩니다.
- 또는 (예 : 펍 서브 주제 기반 클라이언트와 소닉 ESB 서비스/프로세스 등) JMS 응용 프로그램은 점점 각 메시지에 JMSXDeliveryCount 속성 값에 작용하여 자신에 검출을 수행 할 수 있습니다. JMSXDeliveryCount 속성은 int를 사용하여 메시지에 대한 배달 시도 횟수를 지정합니다. javax.jms.Message.getIntProperty ("JMSXDeliveryCount") 메소드를 사용하여 값을 가져옵니다. 이 속성의 값은 메시지가 소비자에게 주어질 때마다 증가합니다. 소비자 개체에 배달되기 위해 대기중인 메시지에 대해 클라이언트 런타임에서 배달 카운터가 유지 관리됩니다. 소비자가 닫히거나 종료되고 다시 생성되거나 다시 시작되면 소비자에게 보낸 각 메시지의 카운터는 0으로 재설정됩니다.
JMSXDeliveryCount는 메시지가 소비자에게 다시 전달 될 때마다 증가합니다. 메시지를 다시 배달 할 수 있습니다.
1) 클라이언트 확인 모드를 사용하는 소비자가 이전에 해당 메시지에 대해 acknowledge()를 호출하지 않은 메시지를 받았습니다.
2) 소비자가 트랜잭션에서 메시지를 수신했거나 커밋을 호출하지 않았거나 롤백을 호출했습니다.
편집:
JMS 클라이언트가 메시지를 처리 할 수없는 경우 인해 나쁜 JMS 헤더로는, (포이즌 메시지라고도 함) 다음과 같은 메시지가 내부 응용 프로그램과 JMS 클라이언트로한다 전달되지 않습니다 그 메시지를 롤백하십시오. 이 경우 JMSXDeliveryCount도 증가합니다.
IBM MQ에서 메시지를 검색 할 큐에 대해 [백 아웃 큐] 및 [백 아웃 임계 값] 속성을 설정 했습니까? 백 아웃 임계 값에 도달하면 JMS 클라이언트는 잘못된 메시지를 백 아웃 대기열에 넣습니다. 이것은 동일한 메시지가 JMS 클라이언트에 의해 반복적으로 검색되는 것을 피하여 다른 좋은 메시지가 애플리케이션으로 전달되는 것을 차단합니다.
- 1. Android가 두 배로 증가한 건가요?
- 2. 비정상적으로 증가한 뷰를 LinearLayout에 프로그래밍 방식으로 추가합니다.
- 3. 결과가 증가한 후에 11이되어야합니다, 12입니다, 왜?
- 4. VB.net 자동 완성도가 증가한 후에도 숫자가 늘어납니다.
- 5. 마지막 빌드와 비교하여 경고 수가 증가한 경우 TFS 빌드가 실패하는 방법
- 6. 드로어 블 리소스가 비정상적으로 증가한 폴더를 알 수있는 방법이 있습니까?
- 7. Perl이 증가한 후에 예상치 못한 값을 인쇄하는 이유는 무엇입니까?
- 8. Anchored 때문에 너비가 증가한 Windows Forms 컨트롤의 너비를 결정하는 방법?
- 9. 새로 만든 mongodb 로컬 데이터베이스가 24GB로 증가한 이유는 무엇입니까?
- 10. 6 일 연속 실행 후 노드 JS 응용 프로그램이 메모리 사용량이 증가한 이유는 무엇입니까?
- 11. 저장된 데이터가 증가한 후 mysql 성능이 저하됩니다. 체계적인 진단 절차에 대한 힌트가 필요합니다.
- 12. 64 비트 아키텍처에서 개체 헤더 크기가 두 배로 증가한 이유는 무엇입니까?
- 13. touchmove로 20 픽셀 증가한 UIImage 이동 X 좌표 또는 Y 좌표
- 14. WCF 테스트 클라이언트를 실행 중이고 app.config에서 증가한 후 MaxReceivedMessageSize 오류가 발생합니다.
- 15. 활동 시작시 할당 된 메모리가 크게 증가한 다음 다시 정상으로 돌아갑니다
- 16. Modelica의 경우 및 경우
- 17. 다른 경우 빈 경우
- 18. Shelve가 큰 사전의 경우 너무 느립니다. 성능을 향상 시키려면 어떻게해야합니까?
- 19. 경우
- 20. 경우
- 21. 경우
- 22. $$ 경우
- 23. 경우
- 24. 경우
- 25. 경우
- 26. , 경우
- 27. 경우
- 28. 경우
- 29. 간단한 "경우 - 그런 다음"경우
- 30. 배쉬 경우 - -> 다음 경우
나쁜 메시지가 나올 경우에도 다시 도와 줄 수 있습니까? 전달 된 또는 이것들은 내가 직면하고있는 상황이 점점 커지고 트랜잭션이 성공할 때 그 이유를 추적 할 수 없기 때문에 일어날 수있는 유일한 시나리오입니다. 당신이 저를 더 도울 수 있다면 그것은 좋을 것입니다 :) – AjayLohani