- JMS Provider
-
Java Message Service (JMS) ist eine durch den Java Community Process genormte Programmierschnittstelle (API) für die Ansteuerung von Message Oriented Middleware aus einem Client heraus, der in der Programmiersprache Java geschrieben ist.
Die API und der durch diese angesteuerte Dienst unterstützen zwei unterschiedliche Ansätze zum Versenden von Nachrichten, zum einen die Nachrichtenwarteschlangen (point-to-point) und zum anderen ein Anmelde-Versendesystem (publish-subscribe).
Bei der Warteschlange gibt es immer je einen Abnehmer. Ist dieser nicht verfügbar, kann die Nachricht optional gespeichert werden und der Empfänger kann sie jederzeit abholen. Bei dem Anmelde-Versendesystem werden die Nachrichten einfach geschickt, egal ob sich jemand angemeldet hat. Wird die Nachricht nicht konsumiert, dann ist dies unerheblich. Man kann dies am besten mit einem Fernseh-Sender vergleichen (Broadcasting). Entweder man schaltet den Fernseher ein und sieht die Nachricht oder man lässt den Fernseher aus und sieht die Nachricht nicht. Wahlweise können die Nachrichten auch zwischengespeichert werden (durable-subscription).
Die Spezifikation des Dienstes sowie die zugehörige API wurden durch den Java Community Process genormt. Für die Anwendung braucht man einen Provider, der die API umsetzt und somit den Dienst bereitstellt. Dafür gibt es sowohl kommerzielle Produkte als auch Open-Source-Projekte.
JMS-Provider
Um JMS nutzen zu können, wird ein JMS-Provider benötigt, der die Topics, Queues und Sessions verwaltet. Die folgende Liste führt JMS-Provider auf. Sie nennt sowohl kommerzielle als auch freie Software, erhebt aber keinen Anspruch auf Vollständigkeit.
Nicht aufgeführt sind jedoch solche JMS-Provider, die ausschließlich als Bestandteil eines Java-EE-Containers (Java-Anwendungsservers) angeboten werden. Eine Übersicht von Java-EE-Containern ist separat verfügbar.
In der untenstehenden Tabelle bedeuten die in der Spalte »Betriebsmodi« enthaltenen Angaben folgendes:
- eigenständig: Der JMS-Provider läuft als eigenständiger Prozess (stand alone) und damit separat von den JMS-Client-Prozessen. Die Kommunikation mit den Clients erfolgt beispielsweise über TCP/IP oder Unix Domain Sockets.
- eingebettet: Der JMS-Provider läuft in derselben JVM (embedded, colocated) wie einer der JMS-Clients. Ein Vorteil ist die schnellere Nachrichtenübertragung.
Moderne JMS-Provider erlauben beide Betriebsmodi.
Name Firma Lizenz Betriebsmodi Eigenschaften, Besonderheiten Stand URL ActiveMQ Apache Open Source (Apache 2) eigenständig, eingebettet 2008-02-11 http://activemq.apache.org/ FioranoMQ Fiorano kommerziell iBus//MessageServer Softwired kommerziell JBoss Messaging Red Hat Open Source (LGPL) eigenständig Joram ObjectWeb Open Source (LGPL) eigenständig, eingebettet Die Dokumentation ist in schlechtem Englisch verfasst und eignet sich nicht gut zum Nachschlagen. Wichtiges fehlt: So ist die Information, wo der JMS-Provider seine Konfigurationsdatei erwartet und wie man dies beeinflussen kann, nur dem Quellcode zu entnehmen. MantaRay Coridan Open Source (Mozilla Public License) eigenständig, eingebettet Mom4j Mom4j development team Open Source (LGPL) eingebettet OpenJMS Open Source eigenständig, eingebettet 2008-03-26 http://openjms.sourceforge.net/ Open Message Queue Sun Microsystems eigenständig Offene und vom Hersteller nicht unterstützte Variante von Sun Java System Message Queue 2008-02-11 https://mq.dev.java.net/ Oracle Advanced Queueing (OAQ) Oracle kommerziell eingebettet Englischsprachige Dokumentation zum Advanced Queueing mit Oracle. http://download.oracle.com/docs/cd/B10501_01/appdev.920/a96587/qintro.htm SonicMQ Progress Software kommerziell Sun Java System Message Queue Sun Microsystems kommerziell eigenständig 2008-02-11 http://java.sun.com/products/jms SwiftMQ Router IIT Software kommerziell TIBCO Enterprise Message Service TIBCO kommerziell webMethods Broker Software AG kommerziell Websphere MQ IBM kommerziell eigenständig, eingebettet Proprietäre, aber JMS-konforme, Library und komplett JMS-konforme Schnittstelle verfügbar. http://www-306.ibm.com/software/integration/wmq/ Weblinks
- http://java.sun.com/products/jms/
- JMS Spezifikation
- JMS mit Oracle Advanced Queueing Detailliertes Tutorial mit Java-Codebeispielen zum JMS mit Oracle Advanced Queueing
- Um dem Leser einen unnötigen Übersetzungsschritt zu ersparen, sind die Links zu den JMS-Providern unmittelbar in der obigen Tabelle enthalten.
Wikimedia Foundation.