Wie setzen MQMD ApplicationID Feld über JMS API?
Ich bin mit der JMS API das senden von Nachrichten an einen Websphere MQ-server.
Die Anwendung, zieht die Botschaften, die ich erstellen möchte mich einrichten, die ApplicationID Feld
in dem MQMD-Struktur auf einen Konstanten Wert.
Ich konnte nicht einen Weg finden, in die JMS-API für den Zugriff auf die MQMD Struktur
Die Frage: gibt es eine Möglichkeit, dies zu tun? wenn ja, dann wie? Wenn Nein, dann ist meine einzige option
ist die Verwendung der MQ-java-API, anstelle von JMS-API?
- Welche version von MQ verwenden Sie ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als der v7.0, Lesen Sie alle MQMD Felder als JMS-message-Eigenschaften und können viele von Ihnen auf die gleiche Weise.
Finden Sie unter: http://publib.boulder.ibm.com/infocenter/wmqv7/v7r0/topic/com.ibm.mq.csqzaw.doc/jm41030_.htm
Sowohl der client und der ein Fehler in WMQ-server muss auf v7.0 oder höher, um diese Funktion zu verwenden, obwohl.
MQMD-Felder gelesen werden können, aus einer empfangenen Nachricht. Legen Sie die MQMDReadEnabled Eigenschaft auf dem Ziel durch den Aufruf setMQMDReadEnabled(true) - Methode.
Dann Lesen Sie die applicationIdentityData mit getStringProperty-Methode.
Aus der MQ-Dokumentation:
Wo der MQMD enthält ein Feld, das ist äquivalent zu der JMS-Feld -, JMS-Bereich zugeordnet ist, auf das Feld MQMD. Zusätzliche MQMD Felder ausgesetzt sind als JMS-Eigenschaften, weil eine JMS-Anwendung muss möglicherweise get-oder set-diese Felder bei der Kommunikation mit einem nicht-JMS-Anwendung.
Die Eigenschaft die du suchst ist wahrscheinlich "JMSXAppID".
Wenn das nicht funktioniert, überprüfen Sie die Dokumentation. Es gibt eine Menge von seltsamen Sachen wie "Dieser Abschnitt gilt nicht, wenn eine Anwendung verwendet eine Echtzeit-Verbindung zu einem Makler." (so dass Sie nicht wollen, dass eine "Echtzeit-Verbindung zu einem broker -" ... was immer das auch heißen mag).
Auch "Der administrator gibt an, dass der JMS-Anwendung ist die Kommunikation mit einer solchen Anwendung durch festlegen der TARGCLIENT-Eigenschaft des Ziels, zu MQ."
Wenn das nicht sinnvoll ist, müssen Sie erstellen test-Fälle, die Ihnen helfen, herauszufinden, was MQ hinter die kulissen. Erstellen Sie eine JMS-Nachricht, und wählen Sie die Eigenschaften, um einige seltsame Werte an und sendet ein inaktiv MQ-Warteschlange, wo können Sie es überprüfen. Auf diese Weise können Sie herausfinden, welches Feld maps, wo.
Nachdem das funktioniert hat, können Sie versuchen, auf andere Weise herum. Wenn Sie JMS-Implementierung erlaubt es Ihnen nicht, um alle Eigenschaften einer Nachricht, wie eine Karte oder so etwas, oder verwenden Sie den Java-debugger zu schauen, die Daten im Speicher.
Field.setAccessible(true)
ist dein Freund.