JAXenter.de

Das Portal für Java, Architektur, Cloud & Agile
X

Jetzt abstimmen im neuen Quickvote: Die Kunst des Logging - wissen Sie wie?

Asynchrone Kommunikation zwischen Anwendungen

ActiveMQ in der Praxis

Ivan Mioc

Fast jede IT-Firma hat mittlerweile in mindestens einem Projekt ActiveMQ eingesetzt. Google-Trends geben darüber hinaus Anlass zu der Vermutung, dass es die meistgenutzte Message-oriented Middleware (MOM) sein könnte. Hauptsächlich in kleineren, unkomplizierten Anwendungslandschaften eingesetzt, zeichnet sich ActiveMQ durch eine unkomplizierte Handhabung, einfache Konfiguration und sehr gute Performance aus. In diesem Artikel bekommen Sie einen Überblick über Funktionsweise und Einsatz von ActiveMQ.

ActiveMQ wird entweder als JMS Provider oder als Broker bezeichnet und hat damit die Rolle eines Servers. Demgegenüber sind alle anderen Anwendungen im JMS-Netzwerk dagegen JMS-Clients. Ein Broker kennt zwei Arten von Destinationen: Queue und Topic. Sobald der Broker die erste Nachricht für diese Destination empfangen hat, wird in beiden Fällen die Destination samt ihrer Art automatisch festgestellt. Queues kennen zwei Arten von Clients: Producer und Consumer. Hat ein Consumer eine Nachricht von einem Producer empfangen, wird diese Nachricht aus der Queue gelöscht und steht den anderen Consumern nicht mehr zur Verfügung. Eine Nachricht kann also nur von einem einzelnen Consumer empfangen (konsumiert) werden.

Voraussetzungen und Hintergrundinformationen

Es wird vorausgesetzt, dass Sie schon mit ActiveMQ in Berührung gekommen sind. Wenn nicht, empfiehlt sich vor dem Lesen dieses Artikels: Für grundlegende Informationen über JMS ist die Definition in Wikipedia lesenswert [1] und für weitere JMS-Details das Buch unter [2]. Unter dem Link [3] kann man ActiveMQ herunterladen. Für die Installation und einen ersten Start empfiehlt es sich, das richtige „Getting Started“ [4] zu lesen. Danach kann man das Beispiel [5] zum Laufen bringen. Dabei ist es sehr interessant, mittels der Web Console unter http://localhost:8161/admin/queues.jsp den ActiveMQ zu beobachten.

In diesem Artikel wird auch die eine oder andere weitergehende Frage angesprochen, die vielleicht eine tiefere Auseinandersetzung mit der Materie erforderlich macht. Dazu empfehlen sich das ActiveMQ Buch [6], die Internetpräsenz von ActiveMQ [3] und Fuse Message Broker [7].

Topics kennen ebenfalls zwei Arten von Clients: Publisher und Subscriber. In diesem Fall ist es jedoch möglich, dass mehrere Subscriber die gleiche Nachricht empfangen.

Im Folgenden gehen wir auf das Queue-Verhalten von ActiveMQ ein. Nach dem KISS-Prinzip hätte eine Queue im Idealfall einen oder mehrere Producer und nur einen Consumer. Oft ist es jedoch erforderlich, entweder aus historischen Gründen oder wegen der Nutzung von ActiveMQ für synchrone Kommunikation, mehrere Consumer einzusetzen. In diesem Fall besteht theoretisch die Gefahr, dass ein Consumer einem anderem die Nachricht wegschnappt. Aus diesem Grund nutzen alle Consumer unterschiedliche Selektoren, um die eigenen Nachrichten herauszufiltern. Mit „Producer“ und „Consumer“ sind in diesem Artikel die Producer- bzw. die Consumer-Anwendung ohne Connection Pool gemeint. In vielen Fällen tritt eine Anwendung sogar in beiden Funktionen auf. Das kann sogar für einen Thread gelten, der ebenfalls gleichzeitig Consumer und Producer sein kann. Hier spricht man über „synchrone Kommunikation“, und in einem solchen Fall werden die oben erwähnten Selektoren genutzt.

 
Verwandte Themen: 

Kommentare

Ihr Kommentar zum Thema

Als Gast kommentieren:

Gastkommentare werden nach redaktioneller Prüfung freigegeben (bitte Policy beachten).