JMS Verbindungsfactorys

Eine Verbindungsfactory ist ein Objekt, das ein JMS -Client (ein JMS -Programm, das die API JMS verwendet) verwendet, um eine Verbindung zu einem JNDI -Provider (einem Messaging-Provider wie IBM® MQ) herzustellen.

Sie können IBM MQ Explorer verwenden, um Verbindungsfactorys zu erstellen und die Verbindungsparameter zu definieren, die die Verbindungsfactory zum Erstellen von Verbindungen verwendet.

Verbindungsfactorys wie Ziele sind verwaltete Objekte und werden in einem JNDI -Namensbereich gespeichert, der eine definierte Position innerhalb des Namens-und Verzeichnisservice ist. Der Ausgangskontext definiert das Stammverzeichnis des JNDI -Namensbereichs. In IBM MQ Explorerwerden alle Verbindungsfactorys in den Ordnern für Verbindungsfactorys im entsprechenden Kontext und in Subkontexten gespeichert, wie in der folgenden Abbildung dargestellt.

In der Abbildung ist die Verbindungsfactory namens Connection Factory 1 im Ordner für Verbindungsfactorys des Ausgangskontextes mit dem Namen File System Initial Context gespeichert.

Screenshot einer Verbindungsfactory im Ordner 'Verbindungsfactorys'.

Wenn Sie eine Verbindungsfactory definieren, wählen Sie den Messaging-Provider aus, der als JMS -Provider verwendet wird (z. B. IBM MQ oder Echtzeit). Eine Verbindungsfactory kann nur Verbindungen zu diesem Messaging-Provider erstellen. Damit der JMS -Client Verbindungen zu einem anderen Messaging-Provider herstellen kann, müssen Sie eine neue Verbindungsfactory erstellen und den Messaging-Provider angeben. Echtzeittransport ist in IBM MQ 8.0nicht verfügbar. Wenn Sie IBM MQ 8.0 verwenden, können Sie einen Echtzeittransport definieren, der jedoch fehlschlägt, wenn versucht wird, eine Verbindung herzustellen.

Domänenunabhängige Verbindungsfactorys

Es gibt zwei Nachrichtendomänen: die Punkt-zu-Punkt-Nachrichtendomäne und die Publish/Subscribe-Nachrichtendomäne. Sie können eine Verbindungsfactory erstellen, um Verbindungen speziell für Punkt-zu-Punkt-Nachrichten (unter Verwendung der QueueConnectionFactory-Schnittstelle) bzw. für Publish/Subscribe-Nachrichten (unter Verwendung der TopicConnectionFactory-Schnittstelle) zu erstellen. In JNDI können Sie auch Verbindungsfactorys erstellen, die domänenunabhängig sind und daher sowohl für Punkt-zu-Punkt- als auch für Publish/Subscribe-Nachrichten (über die ConnectionFactory-Schnittstelle) verwendet werden können. Weitere Informationen finden Sie unter Verbindungsfactory erstellen.

Wenn die JMS -Anwendung nur Punkt-zu-Punkt-Messaging oder nur Publish/Subscribe-Messaging verwenden soll, können Sie die jeweilige Messaging-Domäne auswählen, wenn Sie die Verbindungsfactory erstellen und eine domänenspezifische Verbindungsfactory erstellt wird.

Falls Sie aber sowohl Punkt-zu-Punkt- als auch Publish/Subscribe-Vorgänge mit der gleichen Transaktion durchführen wollen, können Sie eine domänenunabhängige Verbindungsfactory erstellen. Falls beispielsweise eine JMS-Anwendung ein Thema subskribieren soll (Publish/Subscribe-Nachrichten), sendet die JMS-Anwendung bei Erhalt einer bestimmten Nachricht eine andere Nachricht an eine Warteschlange (Punkt-zu-Punkt-Nachrichten). Es ist schwierig, zuverlässig sowohl Punkt-zu-Punkt- als auch Publish/Subscribe-Vorgänge mit der gleichen Transaktion durchzuführen, falls Sie domänenspezifische Verbindungsfactorys verwenden: Sie müssen eine eigene Verbindungsfactory für jede Nachrichtendomäne erstellen. Dies bedeutet, dass einerseits die Punkt-zu-Punkt-Vorgänge mit einer Transaktion durchgeführt werden, die durch die QueueSession-Sitzung gesteuert wird. Andererseits müssen die Publish/Subscribe-Vorgänge mit einer Transaktion durchgeführt werden, die durch die TopicSession-Sitzung gesteuert wird. Es ist schwierig, sicherzustellen, dass die Sende- und Empfangsvorgänge entweder beide durchgeführt oder beide zurückgestellt wurden.

Anstatt eine domänenspezifische Verbindungsfactory für Punkt-zu-Punkt-Vorgänge und eine domänenspezifische Verbindungsfactory für Publish/Subscribe-Vorgänge zu erstellen, können Sie eine einzelne, domänenunabhängige Verbindungsfactory für beide zusammen erstellen. Dies bedeutet, dass die Verbindungsfactory eine Verbindung erstellt, wodurch eine Sitzung angelegt wird. Die Sitzung erstellt ein MessageConsumer-Objekt von einem Thema und ein MessageProducer-Objekt für eine Warteschlange. Wenn die JMS -Anwendung die veröffentlichte Nachricht empfängt, kann die nächste Nachricht unter der Transaktion derselben Sitzung an die Warteschlange gesendet werden. Beide Operationen können dann als einzelne Arbeitseinheit festgeschrieben oder rückgängig gemacht werden.

Weitere Informationen finden Sie unter IBM MQ Classes for JMS verwenden.