Methoden "createQueue" und "createTopic" und der Standard-Messaging-Provider

Sie können die Methode Session.createQueue(String) oder Session.createTopic(String) anstelle einer JNDI-Lookup-Operation verwenden, um eine JMS-Warteschlange oder ein JMS-Topic mit dem Standard-Messaging-Provider zu erstellen.

Anwendungen können die Methode InitialContext.lookup() für den Abruf von verwalteten Objekten verwenden. Eine alternative, aber weniger einfach zu verwaltende Lösung für das Abrufen administrativ definierter JMS-Zielobjekte durch eine JNDI-Lookup-Operation ist die Verwendung der Methode Session.createQueue(String) oder die Methode Session.createTopic(String). Beispiel:
Queue q = mySession.createQueue("Q1");
erstellt eine JMS-Warteschlangeninstanz, mit der auf das vorhandene Ziel Q1 verwiesen werden kann.

Beim Standard-Messaging-Provider ist das vorhandene Ziel als Warteschlange oder Topicbereich in dem Bus verfügbar, mit dem die Sitzung verbunden ist.

createQueue

Die Methode Session.createQueue(String) wird verwendet, um ein JMS-Warteschlangenobjekt zu erstellen, das ein vorhandenes Ziel darstellt. Diese Methode ist eine alternative, aber weniger einfach zu verwaltende Lösung für den Abruf administrativ definierter JMS-Warteschlangenobjekte durch JNDI-Lookup-Operationen.

Einfache Form
In seiner einfachsten Form gibt der Parameter für die Methode createQueue den Namen eines vorhandenen Ziels in dem Bus an, mit dem die Sitzung verbunden ist. Wenn beispielsweise eine Warteschlange mit dem Namen Q1 vorhanden ist, erstellt die folgende Methode eine JMS-Warteschlangeninstanz, mit der auf das Ziel verwiesen werden kann:
Queue q = mySession.createQueue("Q1");
URI-Format
In komplexeren Fällen können Anwendungen ein URI-basiertes Format verwenden. Mit dem URI-Format kann eine beliebige Anzahl von Name/Wert-Paaren angegeben werden, um verschiedene Eigenschaften des Queue-Objekts zu definieren. Der Warteschlangen-URI wird mit dem Präfix queue:// angegeben, dem der Name des Ziels folgt. Die einfache Form für Q1 aus dem Beispiel oben kann mit dem folgenden URI ausgedrückt werden:
Queue q = mySession.createQueue("queue://Q1");
Name/Wert-Paare können mit einem Fragezeichen eingeleitet (?) werden. Beispielsweise kann eine Anwendung eine Sitzung mit einem Bus verbinden und dann das folgende Format verwenden, um eine JMS-Warteschlangeninstanz für Q2 in einem anderen Bus mit dem Namen andererBus zu erstellen:
Queue q = mySession.createQueue("queue://Q2?busName=otherBus");
Wenn Nachrichten an IBM MQ gesendet werden, müssen dem Warteschlangennamen ein kommerzielles A (@) und der Name des Warteschlangenmanagers folgen, in dem sich die Warteschlange befindet, z. B.:
Queue q = mySession.createQueue("queue://Q2@qmgr?busName=otherBus");
Mehrere Name/Wert-Paare können durch ein Et-Zeichen (&) voneinander getrennt werden. Beispiel:
Queue q = mySession.createQueue("queue://Q2?busName=otherBus&deliveryMode=
Application&readAhead=AsConnection&priority=6");
Eigenschaften
busName, deliveryMode, priority, readAhead und timeToLive. Eine Beschreibung dieser Eigenschaften finden Sie in den generierten API-Informationen.

createTopic

Die Methode Session.createTopic(String) wird verwendet, um ein JMS-Topicobjekt zu erstellen, das ein vorhandenes Ziel darstellt. (Bei Topics ist es der Topicbereich und nicht das Topic selbst, das vorhanden ist.) Diese Methode ist eine alternative, aber weniger einfach zu verwaltende Lösung für den Abruf administrativ definierter JMS-Topicobjekte durch JNDI-Lookup-Operationen.

Einfache Form
In seiner einfachsten Form gibt der Parameter für die Methode createTopic den Namen eines vorhandenen Topic im Standardtopicbereich in dem Bus an, mit dem die Sitzung verbunden ist. Wenn der Standardtopicbereich beispielsweise vorhanden ist, kann eine JMS-Topicinstanz verwendet werden, um auf das Topic cats im Standardtopicbereich zu verweisen:
Topic t = mySession.createTopic("cats");
Zur Angabe eines anderen Topicbereichs können Sie die spezielle Syntax Topicbereich:Topic verwenden. Beispiel:
Topic t = mySession.createTopic("kennelTopicSpace:dogs");
URI-Format
Für komplexere Fälle kann ein URI-basiertes Format verwendet werden. Der Topic-URI wird mit dem Präfix topic:// angegeben, dem der Name des Topic folgt. Die vorherigen Beispiele können mit den folgenden URIs angegeben werden:
Topic t = mySession.createTopic("topic://cats");

Topic t = mySession.createTopic("topic://dogs?topicSpace=kennelTopicSpace");

Wie bei Warteschlangen können auch hier mehrere Name/Wert-Paare durch ein Et-Zeichen (&) voneinander getrennt werden.

Eigenschaften
busName, deliveryMode, priority, readAhead, timeToLive und topicSpace. Eine Beschreibung dieser Eigenschaften finden Sie in den generierten API-Informationen.

Unterstützung für MA88-URIs

Anwendungen der WebSphere Application Server Version 5.1 können die Methoden createQueue und createTopic verwenden, um JMS-Warteschlangen- und -Topicobjekte mit dem integrierten Messaging-Provider der Version 5 (dem JMS-Messaging-Provider der Version 5.1) zu erstellen. Für eine leichtere Migration solcher Anwendungen unterstützt der Standard-Messaging-Provider der (der Service Integration Bus) einen großen Teil gültiger MA88-spezifischer Zeichenfolgeparameter für die Methoden "createQueue" und "createTopic".

Standardwarteschlangenmanager
Ein MA88-URI für eine Warteschlange enthält den Namen des Warteschlangenmanagers, z. B.:
queue://qm/queue

Zur Verwendung des Standardwarteschlangenmanagers wird kein Name angegeben. Beispiel: queue:///queue (beachten Sie die drei Schrägstriche ///). Da die Interpretation des Standardwarteschlangenmanagers logisch konsistent mit dem Konzept einer Warteschlange im aktuellen Bus ist, toleriert der Bus die drei Schrägstriche hinter dem Präfix queue:. Damit können MA88-Warteschlangen-URIs für einen Standardwarteschlangenmanager vom Bus unverändert verwendet werden.

Andere Warteschlangenmanager (kein Standard)
Wenn ein MA88-Warteschlangen-URI einen anderen als den Standardwarteschlangenmanager enthält, wie z. B. in queue://qm/queue, ist eine mehrdeutige Interpretation im Bus möglich. Um auf das potenzielle Problem hinzuweisen und sicherzustellen, dass das Ziel während der Portierung beobachtet wird, generiert ein solcher URI eine JMSException, wenn er an die Methode createQueue() übergeben wird.
MA88-Eigenschaften
Wie die Bus-URIs können MA88-URIs eine Reihe von Name/Wert-Paaren enthalten, die Zieleigenschaften definieren. Viele MA88-spezifische Eigenschaften haben keine direkte Entsprechung im Bus und werden stillschweigend ignoriert. Die folgenden MA88-Eigenschaften haben jedoch eine Entsprechung im Bus:
MA88-Name Name des Service Integration Bus Anmerkungen
expiry timeToLive
persistence deliveryMode

1 = nicht persistent
2 = persistent
Andere Werte = Anwendung

Umsetzung von Platzhalterzeichen für Topics

Ein Topic, das für den Konsum von Nachrichten verwendet wird, kann Platzhalterzeichen enthalten. Die Syntax von Platzhalterzeichen in MA88 unterscheidet sich von der XPath-Syntax im Bus. Wenn also ein MA88-URI Platzhalterzeichen enthält, versucht der Bus, sie in die entsprechenden XPath-Platzhalterzeichen zu konvertieren. Die durchgeführte Konvertierung ist von der Existenz der Eigenschaft brokerVersion im MA88-URI abhängig. Der Standard-Messaging-Provider der WebSphere Application Server Version 5.1 setzt voraus, dass alle URIs, in denen ein Topicplatzhalterzeichen verwendet wird, ein Name/Wert-Paar brokerVersion=1 enthalten. Deshalb verwendet der Bus brokerVersion=1 als Auslöser für die Konvertierung der MQSI-Platzhalterzeichen in XPath-Platzhalterzeichen.

Berücksichtigung der Groß-/Kleinschreibung

In allen Teilen des Zeichenfolgeparameters für die Methoden createQueue und createTopic muss auf die Groß-/Kleinschreibung geachtet werden.

Mehrere Instanzen derselben Eigenschaft

Wenn ein URI mehrere Vorkommen einer bestimmten Eigenschaft mit widersprüchlichen Werten enthält, steht nicht fest, welcher Wert verwendet wird.

Widersprüchliche MA88- und Buseigenschaften

Wenn ein URI sowohl eine Eigenschaft der Version 6 als auch die MA88-Entsprechung für diese Eigenschaft enthält, steht nicht fest, welcher Wert verwendet wird.

Unbekannte Eigenschaften

Alle Name/Wert-Paare, in denen der Eigenschaftsname nicht erkannt wird, werden ohne Fehlermeldung ignoriert.

Verwendung von Escape-Zeichen für Sonderzeichen

Die folgenden Zeichen haben in den Zeichenfolgeparametern für die Methoden createQueue und createTopic eine besondere Bedeutung:
: (Doppelpunkt)
Der Doppelpunkt wird in Topickurzformen als Trennzeichen zwischen dem Topicbereich und dem Topic verwendet.
? (Fragezeichen)
Das Fragezeichen wird verwendet, um den Beginn eines Name/Wert-Paares zu kennzeichnen.
& (Et-Zeichen)
Das Et-Zeichen wird als Trennzeichen für die Angabe mehrerer Name/Wert-Paare verwendet.
Wenn Sie eines dieser Zeichen in einem URI verwenden möchten, müssen Sie ihm einen Backslash (\) voranstellen. Dem Sonderzeichen Backslash (\) selbst kann auch ein weiterer Backslash vorangestellt werden: \\. Der Backslash (\) wird von Java als Sonderzeichen behandelt und muss deshalb verdoppelt werden, wenn er in Zeichenfolgekonstanten verwendet wird. Beispiel:
createTopic("myTop\\:ic")                      creates a topic with the name "myTop:ic"
createTopic("topic://my\\?Topi\\\\c")             Erstellt ein Topic mit dem Namen "my?Topi\c".
createQueue("queue://q1?busName=silly\\&bus")     Erstellt eine Warteschlange mit dem Busnamen "silly&bus".

Symbol, das den Typ des Artikels anzeigt. Referenzartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rjn0001_
Dateiname:rjn0001_.html