Websphere MQ 대기열로 메시지를 보내고 있습니다. 메시지를 보내는 동안 REPLY TO QUEUE NAME과 JMSCOrrelationID를 설정합니다. 우리는 또한 사용자 IDENTIFIER를 설정합니다. 코드 스 니펫은 다음과 같습니다.수신 된 COD에 correlID와 본문이 null로 있습니다.
Message msg = session.createTextMessage((String) message);
Destination codeDestination = session.createQueue("queue://" + replyToQueueMgr + "/" + replyToQueueName);
msg.setJMSReplyTo(codeDestination);
msg.setIntProperty(JmsConstants.JMS_IBM_REPORT_COD, MQC.MQRO_COD);
msg.setJMSCorrelationID(msgCorrelId);
msg.setStringProperty(JmsConstants.JMS_IBM_MQMD_USERIDENTIFIER, "abc");
producer.send(msg);
우리가 설정 한 모든 필드가 null이 아니란 점을 유의하십시오. 또한 abc 사용자는 유효한 사용자입니다. 그렇지 않으면 COD가 DEAD LETTER QUEUE로 이동해야하지만 거기에 메시지가 없기 때문입니다. 메시지가 수집 된 후에도 JMSCorrelationID가 null 인 COD가 발생합니다. COD 프로세서에서는 replyToQueuename을 수신 대기합니다.
String correlationID = (String)eventContext.getMessage().getInboundProperty("JMSCorrelationID");
위에 체크하면 상관 ID가 null입니다. 또한 메시지 페이로드는 {null_payload} 유형의 NullPayload 클래스 노새입니다. 나는 우리가 MQC.MQRO_COD을 설정 했으므로 본문이 NULL이라는 것을 알고 있습니다. 하지만 상관 관계가 어떻게 사라 졌는지는 모르겠다.
Webview MQ에서 이러한 동작이 발생할 수있는 구성이 있는지 알려주십시오. 또는 헤더 속성을 설정하는 방식에 뭔가 빠졌습니까?
UPDATE는
우리는 COD 정보에 메시지를 보내는 큐는 주제에 대한 별칭입니다. 이 TOPIC에 2 명의 가입자가 있으며 두 가입자가 메시지를 받았을 때 여러 개의 COD를받은 사례가 있음을 확인했습니다. 모든 가입자가 메시지를 가져온 후 TOPIC에서 단일 COD를 전송할 수있는 방법이 있습니까? 이 QM 설정이 null로 COD의 원인이 될 수 있습니까?
MQRO_COD_WITH_FULL_DATA ... getInboundProperty()가 표준 JMS MQ 호출이 아닐 수도 있습니다. getMessage()에서 리턴 된 메시지 오브젝트 클래스는 무엇입니까? – Calanais
전체 데이터가 삭제 될 수 있습니다. MQRO_COD_WITH_DATA (메시지 데이터의 100 바이트 만 포함)를 시도 할 수 있습니다. – Roger
getInboundProperty()는 뮬 API 메서드입니다. 그리고 나는 어떤 자료도 원하지 않는다. 유사한 구성이 다른 QM에서 보낸 다른 메시지에도 적용됩니다. –