Java Message Service Provider
aus Wikipedia, der freien Enzyklopädie
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.
[Bearbeiten] 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, eingebettet | |||
| 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 Queuing (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/ |
[Bearbeiten] 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.

