2012-02-28 1 views
1

MQ에서 기존 큐 관리자의 인스턴스가있는 경우 응용 프로그램이 액세스 할 수있는 queuemanager1을 말하십시오. queuemanager1을 통해 다른 큐 관리자 인 queuemanager2의 큐를 가리키는 큐를 생성하여 메시지를 보낼 수 있습니다. 이는 아마도 앱이 queuemanager2에 직접 액세스 할 수 없지만 queumanager1을 호스팅하는 MQ 서버가 수행하기 때문에 수행됩니다.JMS API의 QueuManager를 통해 전달

코드는 다음과 같이 보입니다 :

MQQueue destQueue = queuemanager1.accessQueue ("queFromAnotherMngr"CMQC.MQOO_OUTPUT | CMQC.MQOO_FAIL_IF_QUIESCING, "queuemanager2", NULL, NULL을);

JBoss AS 6 용 IBM MQ JCA 어댑터를 사용하도록 코드를 리팩터링합니다. 그래서 바닐라 JMS API (InitialContext JNDI 조회, 프로듀서 등 사용)를 사용하여 연결을 관리해야한다고 생각합니다. JBoss.

그러나 일반 JMS에서는받는 MQ 서버가 내 메시지를 다른 큐 관리자 (queuemanager2)의 다른 큐로 전달할 수있는 방법을 알 수 없습니다.

지금까지 조사한 내용에서 Message Queuing Message Descriptor (MQMD)라는 MQ로 전송 된 개체가 있으며 "ReplyToQMgr"및 "ReplyToQ"라는 필드가 있습니다. JMS API를 JCA 어댑터와 함께 사용하여 이러한 필드를 업데이트하는 방법을 찾으면 내 솔루션이 있다고 생각합니다. 이견있는 사람? 아이디어? 제안? 솔루션? 감사!

답변

1

ReplyTo 필드를 사용하면 원격 응용 프로그램에서 메시지를 다시 보낼 수 있습니다. 이 메시지는 WebSphere MQ가 원본 메시지를 라우팅 할 때 사용하지는 않지만 수신 확인 및 실패 보고서를 처리하는 데 사용됩니다.

JNDI 조회를 사용하여 원격 QMgr에서 대기열을 지정하는 방법은 대기열 개체에 QMNAME 필드를 정의하는 것입니다. WebSphere MQ 오브젝트가 지원하는 모든 특성 목록은 Properties of WebSphere MQ classes for JMS objects을 참조하십시오. 맨 위 테이블에서 언급되지 않은 것은 대기열의 QMNAME 속성이 연결 팩토리의 QMNAME 속성과 일치 할 필요가 없다는 것입니다. 이러한 속성이 다른 경우 로컬 QMgr은 큐 개체가 열릴 때 대상 QMgr에 대한 경로를 확인하려고 시도합니다. 경로 (전송 큐 또는 QMgr 별칭이 대상 QMgr과 동일한 이름으로 존재해야 함)을 찾을 수 있고 전송 대기열에 대한 앱 권한이있는 한 이동할 수 있습니다.

JMS 예외가 발생하면 이어야하며 연결된 예외가 있는지 확인하고 인쇄해야합니다. 여기에는 귀하 또는 관리자에게 이름 확인, 승인 또는 기타 문제가 있는지 여부를 알려주는 WMQ 이유 코드가 있습니다. 이렇게하는 방법에 대한 제안은 Exceptions in WebSphere MQ classes for JMS을 참조하십시오. 이것은 WMQ 관련 조언이 아님을 유의하십시오. JMS는 예외보고를위한 다중 레벨 구조를 지정하고 링크 된 예외는 공급 업체 특정 오류가보고되는 곳입니다. 따라서 JMS 응용 프로그램은 사용 된 전송 공급자와 관계없이 연결된 예외를 인쇄해야합니다.

+0

이렇게하면 URI를 사용하여 큐를 생성 할 수 있습니다. 큐 destinationQueue = session.createQueue ("queue : // QMgr2/Q2")는 다음과 같은 경우에도이 새 queueManager/Queue (QMgr2/Q2)로 메시지를 라우팅 할 수 있습니다. 세션은 jca 어댑터를 사용하는 원래 연결 팩토리의 jndi 조회에서 가져온 queumanager에서 생성 되었습니까? –

+0

링크 된 예외를보고 할 필요가 있음을 알고 있습니다. 어쨌든 입력 해 주셔서 감사합니다. –

+0

예. 연결되지 않은 QMgr을 지정하면 WMQ가 필요한 경로를 해결하려고합니다. –