
|
Message Nachricht, die zwischen Anwendungen ausgetauscht wird. Häufig werden Textnachrichten in Form von XML-Dokumenten eingesetzt. |
|
Message-Broker Ist eine Erweiterung eines Message-Servers. Er kann abhängig vom Inhalt der Nachricht dessen Ziel bestimmen. |
|
Publisher Client, der Nachrichten zu einem Topic einstellt. |
|
Queue Nachrichten-Warteschlage des Message Servers. Der Sender stellt Nachrichten ein, der Empfänger liest diese. |
|
SSL Secure Socket Layer. Protokoll zur Verschlüsselung von Netzwerkverbindungen. |
|
Subscriber Einhängen eines Dateisystems unterhalb eines bestimmten Pfades/Verzeichnisses (Mountpoint).Client, der Nachrichten zu einem Topic liest. |
|
Topic Ist eine spezialisierte Nachrichten-Warteschlange. |
$ .\activemq.bat ACTIVEMQ_HOME: g:\software\apache-activemq-5.2.0\bin\.. ACTIVEMQ_BASE: g:\software\apache-activemq-5.2.0\bin\.. Loading message broker from: xbean:activemq.xml INFO DefaultCamelContext - JMX enabled. Using InstrumentationLifecycleStrategy. … INFO TransportServerThreadSupport - Listening for connections at: tcp://tiguan:61616 INFO TransportConnector - Connector openwire Started INFO TransportServerThreadSupport - Listening for connections at: ssl://tiguan:61617 INFO TransportConnector - Connector ssl Started INFO TransportServerThreadSupport - Listening for connections at: stomp://tiguan:61613 INFO TransportConnector - Connector stomp Started INFO TransportServerThreadSupport - Listening for connections at: xmpp://tiguan:61222 INFO TransportConnector - Connector xmpp Started INFO NetworkConnector - Network Connector default-nc Started INFO BrokerService - ActiveMQ JMS Message Broker (localhost, ID:tiguan-1078-1254059333437-0:0) started … INFO WebConsoleStarter - ActiveMQ WebConsole initialized. INFO /admin - Initializing Spring FrameworkServlet 'dispatcher' INFO log - ActiveMQ Console at http://0.0.0.0:8161/admin INFO log - ActiveMQ Web Demos at http://0.0.0.0:8161/demo |
| Abb. 1: Ausgabe auf der Console beim Start von ActiveMQ. |
|
| Abb. 2: Hauptmenü der webbasierten Administrationsoberfläche. Vergrößern |
|
| Abb. 3: Dialog zum Erstellen einer Nachricht. Vergrößern |
<destinations> <queue physicalName="configured.queue" /> </destinations> |
| Abb. 4: Ausschnitt aus der Konfigurationsdatei activemq.xml zur Definition der Queue configured.queue. |
|
Queue: Point-to-Point-KommunikationEine Message Queue wird oftmals für eine Point-to-Point-Kommunikation genutzt: Die Sender stellen Textnachrichten, oft als XML-Dokument, in die Nachrichten-Warteschlange. Der Empfänger holt diese Nachricht ab, verarbeitet sie und löscht sie aus der Warteschlange. Für die Steuerung der Kommunikation können die folgenden Eigenschaften genutzt werden:
|
Topic: Publish-Subscribe-KommunikationDie Publish-Subscribe-Kommunikation funktioniert wie ein schwarzes Brett. Viele Sender können zu einem Thema (Topic) Nachrichten einstellen (publish). Genauso kann es viele Interessenten (Subscriber) geben, die an diesen Nachrichten interessiert sind. Die Nachrichten können genauso wie bei der Point-to-Point-Kommunikation mit Properties versehen werden, um ein filtern der Nachrichten zu ermöglichen. In der Regel wird beim Erstellen der Nachricht eine Lebensdauer angegeben, um zu definieren, wie lange sie verfügbar ist. So wird der Nachrichtenbestand in der Queue reguliert. |
ActiveMQ kann kostenfrei heruntergeladen werden [1]. Für die getestete Version 5.2.0 ist eine Java-Version 1.5 oder höher erforderlich.
Nach dem Entpacken des Zip-Files wechseln Sie in das bin-Verzeichnis von ActiveMQ. Danach starten Sie unter MS-Windows activemq.bat. In der Unix/Linux-Distribution von ActiveMQ gibt es entsprechende Shell-Skripte.
Schon ist der Message Broker gestartet. In der Standardinstallation kann unmittelbar mit der Entwicklung angefangen werden – eine weitere Konfiguration ist nicht erforderlich. Die Zugangsparameter sind der Konsolenausgabe (siehe Abbildung 1) zu entnehmen:
Für den Zugriff auf die Message Queues stehen mehrere Protokolle zur Verfügung. Das Standard-Protokoll wird bei ActiveMQ openwire genannt.
Über dieses Protokoll korrespondieren Java-Anwendungen über JMS oder C/C++-Anwendungen mit Hilfe der von ActiveMQ mitgelieferten Bibliotheken. Über openwire können somit Java- und C/C++-Anwendungen einfach Textnachrichten austauschen.
In Abbildung 1 ist als URL tcp://tiguan:61616 angegeben. Damit verbindet sich der Client mit dem Message Server. Auch eine verschlüsselte openwire-Verbindung wird angeboten (ssl://tiguan:61617).
Der Vollständigkeit halber sei erwähnt, dass weitere Protokolle in der Standardkonfiguration zur Verfügung stehen. Dieses sind stomp, das unter anderem für Perl- und PHP-Clients nützlich ist, und xmpp, als erweiterbares Nachrichtenprotokoll, das beispielsweise für Instant Messaging oder Chat-Rooms verwendet wird.
Neben der Angabe der Protokolle für den Nachrichtenverkehr erscheint im Protokoll ActiveMQ Console at http://0.0.0.0:8161/admin. Diese URL kann direkt von einem Internetbrowser aufgerufen werden, um administrative Aufgaben zu erledigen.
Gleich vorweg – für die Java-Entwicklung kann ActiveMQ in der Standardkonfiguration betrieben werden: Die Webanwendung für die Administration dient in erster Linie zur Überprüfung der Konfiguration.
Die Administrationsoberfläche steht als Web-Anwendung über den Port 8161 unter /admin zur Verfügung. Wie in Abbildung 2 zu sehen, können hier sowohl Queues als auch Topics überwacht und eingerichtet werden. Ebenfalls können auch Vorgänge des Clients als Sender für eine Queue oder als Subscriber für ein Topic eingeleitet werden. Auf diese Weise ist der Weg einer Nachricht nachvollziehbar.
Queues oder Topics werden dynamisch erzeugt. Sie stehen in dem Moment zur Verfügung, wenn die erste Nachricht mit einem entsprechenden Ziel beim Message Broker eingeht.
So kann durch den Link Senden unmittelbar eine Nachricht für eine neue Queue erstellt werden, siehe Abbildung 3.
Eine Besonderheit stellen die Felder Message Group und Message Group Sequence Number dar. Über diese Eigenschaften sorgt ActiveMQ dafür, dass die Nachrichten mit derselben Message Group nur an einen Empfänger in der angegebenen Reihenfolge gehen.
Gesendete Nachrichten werden angezeigt, indem im Hauptmenü die zugehörige Queue oder das Topic ausgewählt wird (siehe Abbildung 2). Nachrichten-Kopf, -Properties und -Inhalt sind einsehbar. Nachrichten lassen sich menügesteuert löschen, kopieren oder verschieben.
Für die Entwicklung ist die Standard-Konfiguration bestens geeignet. Aber auch für den Betrieb kann ActiveMQ viele Wünsche erfüllen. Dazu muss die Konfigurationsdatei activemq.xml angepasst werden.
Ganz oben auf der Wunschliste wird sicher stehen, dass durch die Konfiguration festgelegt wird, welche Queues oder Topics vom Server bedient werden. Es soll verhindert werden, dass diese einfach durch den Client angelegt werden. Im Element destinations (siehe Abbildung 4) lassen sich alle Queues/Topics konfigurieren, die mit dem Start des Message-Servers zur Verfügung stehen sollen. Durch das simpleAuthentication-Plugin wird verhindert, dass jeder Benutzer weitere Queues oder Topics anlegt.
Der nächste Punkt der Wunschliste wird bestimmt das Thema Persistenz betreffen. In der Standardkonfiguration wird für die Sicherung von Nachrichten der dateibasierte AMQPersistence-Adapter eingesetzt. Für gängige Datenbanksysteme stehen Templates für die Konfiguration zur Verfügung.
Gängige Architekturen für den Aufbau von Netzwerken für Message Broker von einfachem Proxy bis hin zu Lösungen für Hochverfügbarkeit oder zum Load Balancing werden unterstützt. Regelbasiertes Zustellen von Nachrichten ist möglich.
Mit ActiveMQ steht sowohl dem Entwickler als auch dem Systemarchitekten ein Produkt zur Verfügung, das professionellen Ansprüchen genügt. Insbesondere die einfache Handhabung, sowie die Auswahl an unterstützten Protokollen und ausgelieferten Bibliotheken sprechen für ActiveMQ.
Bei der Planung, Realisierung und Betrieb Ihrer nachrichtenbasierenden Anwendung unterstützen wir Sie gern.