Integrierter JMS-Messaging-Provider von Liberty

Liberty-Messaging ist ein integriertes Messaging-Feature in Liberty. Es handelt sich um eine zusammensetzbare, flexible und dynamische JMS-Messaging-Engine, die in Liberty ausgeführt wird. Liberty-Messaging ist mit den Spezifikationen JMS 1.1 und JMS 2.0 kompatibel und unterstützt die Punkt-zu-Punkt- und Publish/Subscribe-Messaging-Modelle.

Liberty-Messaging wird nur in der Liberty-Laufzeitumgebung ausgeführt. Sie können den Feature-Manager von Liberty verwenden, um die Messaging-Features bei Bedarf zu aktivieren oder zu inaktivieren. Aufgrund der vielfältigen Zusammensetzbarkeit der Messaging-Laufzeitumgebung können Sie die grundlegenden Messaging-Features für die Laufzeitumgebung aktivieren und weitere Messaging-Features, z. B. Sicherheit, Transaktionen und Kommunikation über Fernzugriff, in Abhängigkeit von Ihren Anforderungen dynamisch aktivieren.

Liberty-Messaging kann in zwei Komponenten klassifiziert werden:
  • JMS-Serverlaufzeitumgebung: Stellt alle Laufzeitfunkionen für Verbindungen, Transaktionen, Persistenz, Sicherheit usw. bereit.
  • JMS-Clientkonnektivität: Stellt die Unterstützung für Ressourcenadapter bereit, um den JMS-Clients die synchrone und asynchrone Ausführung von Messaging-Aktivitäten zu ermöglichen.

Die Messaging-Engine wird als Singleton-Instanz in Liberty ausgeführt, d. h., es kann nur jeweils eine einzige Messaging-Engine in einem Liberty-Kernel aktiv sein.

Liberty-Messaging-Architektur

Liberty-Messaging zeichnet sich durch eine vielfältige Zusammensetzbarkeit und eine hohe Dynamik aus. Liberty-Messaging besteht aus mehreren weiteren internen Messaging-Unterkomponenten, die als OSGi-Bundles implementiert sind und die entsprechend den Benutzeranforderungen aktiviert oder inaktiviert werden können. OSGi-Services werden verwendet, um die Lebenszyklen von Komponenten sowie die Injektion von Abhängigkeiten und Konfigurationen zu verwalten.
Abbildung 1. Liberty-Messaging-Architektur
Diagramm mit den Basiskomponenten des Liberty-Messaging-Service

Die Messaging-Laufzeit und andere Messaging-Unterkomponenten werden als OSGi-Bundles in einem OSGi-Framework ausgeführt. Dadurch kann der Liberty-Kernel die Messaging-Bundles entsprechend ihrer Nutzung laden und entladen. Wenn der Benutzer die Messaging-Sicherheit beispielsweise nicht verwendet, werden die zugehörigen Bundles für die Messaging-Sicherheit nicht initialisiert.

Anwendungsimplementierung

Liberty-Messaging unterstützt drei Typen der JMS-Anwendungskonnektivität. Die Anwendung kann auf eine der folgenden Arten ausgeführt werden:
  • In einer Liberty-Instanz, die die Messaging-Engine hostet.
  • In einer anderen Liberty-Instanz, die keine Messaging-Engine hostet.
  • In WebSphere Application Server Traditional.
Abbildung 2. Modell der Anwendungsimplementierung
Diagramm mit den drei JMS-Anwendungskonnektivitätstypen, die von Liberty-Messaging unterstützt werden

Liberty-Messaging unterstützt die prozessinterne Konnektivität und die Netzkonnektivität über TCP/IP für Anwendungen. Wenn die JMS-Anwendung in derselben JVM implementiert wird, in der auch die Messaging-Engine ausgeführt wird, kann die Anwendung ohne Verwendung der TCP/IP-Schicht direkt mit der prozessinternen Messaging-Engine kommunizieren. Dies bietet erhebliche Leitungsvorteile für die Anwendungen beim Senden und Empfangen von Nachrichten.

JMS-Anwendungen, die in der Liberty-Instanz ausgeführt werden, die die Messaging-Engine nicht hostet, müssen eine Verbindung über TCP/IP herstellen, um mit der Messaging-Engine kommunizieren zu können.

Nachrichtenverarbeitung

Ziele (Warteschlangen oder Topics) befinden sich immer in der Messaging-Engine, in der die Ziele definiert sind. Wenn die Anwendung eine Nachricht an ein Ziel senden oder von einem Ziel empfangen muss, muss sie immer eine Verbindung zu der Messaging-Engine herstellen, in der sich das Ziel befindet.
Abbildung 3. Nachrichtenverarbeitung in Liberty-Messaging
Diagram showing how the Liberty messaging handles messages

Symbol das den Typ des Artikels anzeigt. Konzeptartikel

Dateiname: cwlp_msg_embedded.html