Synchrone messaging möglich mit JMS/ein Fehler in WMQ?
Sagen wir, es ist eine mobile Anwendung, die benötigt, um eine sync-Anfrage/Abfrage einige Daten von einem server. Die Anfrage wird an hosted JMS-client zuerst, dass das veröffentlichen einer Nachricht/Anfrage auf die externe Queue (vom partner). Jetzt ist hier, wo es anfängt unklar zu sein. Wie bekomme ich eine Antwort von dem partner in der synchron-Mode.
- Sollten die partner setzen separate queue für mich zu abonnieren und mir dann blockieren die mobile-Anfrage, bis ich die Antwort-Nachricht aus, die Sie trennen, die Warteschlange?
- Hat JMS oder proprietäre WebSphere MQ Schnittstelle die Unterstützung für sync-Nachrichten?
- Was sind andere Möglichkeiten, es zu implementieren, mit messaging?
Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das lehrbuch-Muster ist wie folgt:
Beachten Sie, dass mit ein Fehler in WMQ das erwartete Verhalten des Diensteanbieters zu kopieren JMSMessageID aus der request-Nachricht an den JMSCorrelationID der Antwort. Es ist weniger üblich zu verlangen, dass der Absender zu generieren JMSCorrelation-ID und kopieren Sie es in das JMSCorrelationID der Antwort, aber einige Anwendungen verwenden, die Verhalten. Sie müssen verstehen, wie Ihr service provider beschäftigt sich mit diesem, um zu bestimmen, das richtige Verhalten für Ihre requester Anwendung.
Wenn Sie die komplette ein Fehler in WMQ Client-Installation haben Sie bereits Beispielcode, der auch die meisten dieser. Wenn auf den standardmäßigen Speicherort installiert, suchen Sie in...
C:\Program Files\IBM\Websphere MQ\tools\jms\samples\simple\simpleRequestor.java
...oder der entsprechende Ort unter
/var/mqm
für UNIX - /Linux-Distributionen. Dies ist einer der vielen Gründe, um die Vollversion installieren-client, anstatt Sie einfach nach den jar-Dateien. Wenn Sie brauchen, um den client herunterzuladen, ist geliefert, wie SupportPac MQC7.Den "Kunden" erstellen können eine temporäre queue, und übergeben Sie den Namen dieser in die Anfrage.
Der "server" erhält eine Anfrage für eine bekannte Warteschlange, sendet aber die "replyTo" mit den Namen der Warteschlange sepecified durch die "client".
JMS hat eine "replyTo" - Eigenschaft für diesen Zweck.
Diese Weise der client sieht nur Nachrichten, die für ihn bestimmt.
Auf der Spitze von meinem Kopf ich sehe 2 Möglichkeiten.
erstellen 2 Warteschlangen: eingehende und ausgehende. Client sendet an eingehende Warteschlange und empfängt Nachrichten, die von der ausgehenden Warteschlange.
können Sie verwenden die gleiche Warteschlange für beide. Nur spezielle Eigenschaft jeder Nachricht, und verwenden Selektor zum filtern von relevanten Nachrichten nur.
dein server-Seite sollte senden Nachricht zuerst, und dann rufen Sie
receive
- Methode (siehe JMS-javadoc). Diese Methode blockiert, bis Sie bekommen die Nachricht oder timeout abgelaufen ist. Es ist für Sie wichtig, in dieser Art und Weise und nicht Nachrichten Abhören (Listener verwendet werden für async. Modus)