Jakarta Messaging (ehemals Java Message Service oder JMS ) ist eine Java -Programmierschnittstelle (API) für nachrichtenorientierte Middleware . Sie bietet generische Messaging-Modelle, die das Produzenten-Konsumenten-Problem lösen können und das Senden und Empfangen von Nachrichten zwischen Softwaresystemen erleichtern . [ 1 ] Jakarta Messaging ist Bestandteil von Jakarta EE und wurde ursprünglich durch eine Spezifikation von Sun Microsystems definiert, bevor sie vom Java Community Process weiterentwickelt wurde . [ 2 ]

Allgemeine Idee der Nachrichtenübermittlung

Messaging ist eine Form der lose gekoppelten, verteilten Kommunikation, wobei der Begriff „Kommunikation“ in diesem Kontext als Austausch von Nachrichten zwischen Softwarekomponenten verstanden wird. Nachrichtenorientierte Technologien versuchen, die enge Kopplung von Kommunikationsschnittstellen (wie TCP- Netzwerk- Sockets , CORBA oder RMI ) durch die Einführung einer Vermittlungskomponente zu lockern. Dieser Ansatz ermöglicht es Softwarekomponenten, indirekt miteinander zu kommunizieren. Ein Vorteil ist, dass die Absender keine genauen Kenntnisse über ihre Empfänger benötigen.

Zu den Vorteilen von Messaging gehören die Möglichkeit, heterogene Plattformen zu integrieren, Systemengpässe zu reduzieren, die Skalierbarkeit zu erhöhen und schneller auf Veränderungen zu reagieren. [ 3 ]

Versionsverlauf

Elemente

Folgende Elemente sind JMS-Elemente: [ 19 ]

JMS-Anbieter
Eine Implementierung der JMS-Schnittstelle für nachrichtenorientierte Middleware (MOM). Provider werden entweder als Java-JMS-Implementierung oder als Adapter für eine Nicht-Java-MOM implementiert.
JMS-Client
Eine Anwendung oder ein Prozess, der Nachrichten erzeugt und/oder empfängt.
JMS-Produzent/Herausgeber
Ein JMS-Client, der Nachrichten erstellt und versendet.
JMS-Verbraucher/Abonnent
Ein JMS-Client, der Nachrichten empfängt.
JMS-Nachricht
Ein Objekt, das die zwischen JMS-Clients übertragenen Daten enthält.
JMS-Warteschlange
Eine Warteschlange (Queue) ist ein Zwischenspeicher, der gesendete Nachrichten enthält, die darauf warten, gelesen zu werden (von genau einem Empfänger). Wie der Name schon sagt, werden die Nachrichten in der Reihenfolge ihres Versands zugestellt. Eine JMS-Warteschlange garantiert, dass jede Nachricht nur einmal verarbeitet wird.
JMS-Thema
Ein Verteilungsmechanismus zum Veröffentlichen von Nachrichten, die an mehrere Abonnenten zugestellt werden.

Modelle

Die JMS-API unterstützt zwei unterschiedliche Modelle:

  • Punkt-zu-Punkt
  • Veröffentlichen und abonnieren

Punkt-zu-Punkt-Modell

Im Punkt-zu-Punkt -Messaging-System werden Nachrichten an einzelne Empfänger weitergeleitet, die Warteschlangen für eingehende Nachrichten verwalten. Dieses Messaging-System basiert auf dem Konzept von Nachrichtenwarteschlangen , Sendern und Empfängern. Jede Nachricht wird an eine bestimmte Warteschlange adressiert, und die empfangenden Clients entnehmen die Nachrichten aus den für sie eingerichteten Warteschlangen. Obwohl beliebig viele Sender Nachrichten an die Warteschlange senden können, ist die Zustellung jeder Nachricht an einen Empfänger garantiert. Warteschlangen speichern alle an sie gesendeten Nachrichten, bis diese verarbeitet wurden oder ablaufen. Sind keine Empfänger für die Nachrichten registriert, werden diese in der Warteschlange gespeichert, bis sich ein Empfänger registriert.

Publish-and-Subscribe-Modell

Das Publish-Subscribe- Modell ermöglicht das Veröffentlichen von Nachrichten zu einem bestimmten Themenbereich. Abonnenten können ihr Interesse am Empfang von Nachrichten zu einem bestimmten Themenbereich bekunden . In diesem Modell wissen weder der Herausgeber noch der Abonnent voneinander. Man kann dies gut mit einem anonymen Schwarzen Brett vergleichen.

  • Null oder mehr Verbraucher werden die Nachricht erhalten.
  • Zwischen Publishern und Subscribern besteht eine zeitliche Abhängigkeit. Der Publisher muss ein Nachrichtenthema erstellen, das Clients abonnieren können. Der Subscriber muss kontinuierlich aktiv bleiben, um Nachrichten zu empfangen, es sei denn, er hat ein dauerhaftes Abonnement eingerichtet. In diesem Fall werden Nachrichten, die veröffentlicht wurden, während der Subscriber nicht verbunden war, erneut verteilt, sobald er sich wieder verbindet.

JMS ermöglicht die Trennung von Anwendung und Transportschicht . Dieselben Java- Klassen können zur Kommunikation mit verschiedenen JMS-Providern verwendet werden, indem die JNDI-Informationen ( Java Naming and Directory Interface ) des jeweiligen Providers genutzt werden. Die Klassen stellen zunächst über eine Verbindungsfactory eine Verbindung zur Queue oder zum Topic her und verwenden anschließend die Methoden `populate` und `send` bzw. `publish`, um Nachrichten zu senden oder zu veröffentlichen. Auf der Empfängerseite können Clients die Nachrichten dann empfangen oder abonnieren.

URI-Schema

RFC 6167 definiert ein jms:URI-Schema für den Java Message Service.

Implementierungen durch Anbieter

Um JMS zu verwenden, wird ein JMS-Provider benötigt, der Sessions, Queues und Topics verwalten kann. Ab Java EE Version 1.4 muss ein JMS-Provider in allen Java EE-Anwendungsservern enthalten sein. Dies kann mithilfe des Message-Inflow-Managements der Java EE Connector Architecture implementiert werden , die erstmals in dieser Version verfügbar war.

Nachfolgend eine Liste gängiger JMS-Anbieter:

Siehe auch

Referenzen

  1. ^ Curry, Edward. 2004. „Message-Oriented Middleware“ . In: Middleware for Communications, hrsg. von Qusay H. Mahmoud, S. 1–28. Chichester, England: John Wiley and Sons. doi : 10.1002/0470862084.ch1 . ISBN 978-0-470-86206-3
  2. ^ „JSR 914: Java Message Service (JMS) API“ . The Java Community Process Program . Abgerufen am 31. Juli 2018 .
  3. ^ Richards et al., Seiten 3–5.
  4. ^ a b „Java Message Service“ (PDF) . Sun Microsystems . 5. Oktober 1998. Archiviert (PDF) vom Original am 24. Februar 1999. Abgerufen am 31. Juli 2018 .
  5. ^ „Java Message Service Documentation“ . Sun Microsystems. 30. Oktober 1998. Archiviert vom Original am 24. Februar 1999. Abgerufen am 31. Juli 2018 .
  6. ^ „Java Message Service Source – Version 1.0.1a“ . Sun Microsystems. 29. Oktober 1998. Archiviert vom Original (ZIP) am 16. August 2000. Abgerufen am 31. Juli 2018 .
  7. ^ „Java Message Service“ (PDF) . Sun Microsystems (veröffentlicht am 17. Dezember 1999). 9. November 1999. Archiviert (PDF) vom Original am 23. August 2000. Abgerufen am 31. Juli 2018 .
  8. ^ „Java Message Service Documentation“ . Sun Microsystems. 23. Dezember 1999. Archiviert vom Original am 29. Februar 2000. Abgerufen am 31. Juli 2018 .
  9. ^ „Java Message Service“ (PDF) . Sun Microsystems. 27. August 2001. Archiviert (PDF) vom Original am 9. Oktober 2022. Abgerufen am 31. Juli 2018 .
  10. ^ „Java Message Service“ (PDF) . Sun Microsystems. 12. April 2002. Archiviert (PDF) vom Original am 9. Oktober 2022. Abgerufen am 31. Juli 2018 .
  11. ^ „Java Message Service“ (PDF) . Oracle . 20. März 2013. Archiviert (PDF) vom Original am 9. Oktober 2022. Abgerufen am 31. Juli 2018 .
  12. ^ „JMS 2.0 Final Release“ . Java Message Service Specification . 9. Juni 2017. Abgerufen am 31. Juli 2018 .
  13. ^ „JSR 343: Java Message Service 2.0“ . The Java Community Process Program . Abgerufen am 31. Juli 2018 .
  14. ^ „Java Message Service“ (PDF) . Oracle. 10. März 2015. Archiviert (PDF) vom Original am 9. Oktober 2022. Abgerufen am 31. Juli 2018 .
  15. ^ „JMS 2.0 Errata Release (Rev a)“ . Java Message Service Specification . 5. Juli 2017. Abgerufen am 31. Juli 2018 .
  16. ^ „JMS 2.0 Spezifikation“ . docs.tibco.com . Abgerufen am 29.08.2025 .
  17. ^ Monson-Haefel, Richard (6. Dezember 2018). „JMS 3.0: Machen Sie mit!“ . Tomitribe . Abgerufen am 17. Juli 2020 .
  18. ^ „Jakarta Messaging 3.1 | Jakarta EE | The Eclipse Foundation“ . Jakarta® EE: Die neue Heimat von Cloud Native Java . Abgerufen am 29.08.2025 .
  19. ^ Java Message Service (JMS)
  20. ^ "Apache Qpid™: Open Source AMQP Messaging" .
  21. ^ Wallis, Graham. „Auswahl eines Messaging-Systems: WebSphere MQ vs. WebSphere Application Server Service Integration Bus“ . IBM developerWorks .
  22. ^ "TIBCO Produktdokumentation - TIBCO Enterprise Message Service" .

Weiterführende Literatur

  • Richards, Mark; Richard Monson-Haefel; David A. Chappell (2009). Java Message Service, Zweite Auflage . O'Reilly. ISBN 978-0-596-52204-9Die