für Delphi (6 bis 2009) und Free Pascal erhältlich sind seit 2008 bzw. 2009 kommerzielle Client Libraries für Open Source Message Broker, mit denen sich plattform- und programmiersprachenübergreifend Anwendungen über asynchronen Austausch von Nachrichten und Objekten verbinden lassen:
Habari ActiveMQ Client - für den Apache ActiveMQ Message Broker
Habari OpenMQ Client - für den Open Message Queue Broker
Beide verwenden eine einfache TCP/IP Schnittstelle, basierend auf dem Stomp Protokoll. Nachrichten können Texte und Binärdaten enthalten, bei ActiveMQ können auch Objekte zum Beispiel aus Java (aber auch C# und anderen Sprachen) serialisiert an Delphi Anwendungen übertragen werden (und umgekehrt), dazu können JSON und XML als Serialisierungsverfahren genutzt werden. Als TCP/IP Bibliotheken können Synapse und Internet Direct 10 (Indy) verwendet werden.
Was kann man damit machen?
Neben der Möglichkeit, im Enterprisebereich unterschiedliche Anwendungen miteinander zu verbinden (z.B. eine PHP Webanwendung, einen Java Applicationserver und GUI Module die in C# oder Delphi geschrieben sind), lassen sich auch kleinere Aufgabenstellungen damit realisieren: Nachrichtenaustausch im 'Broadcast'-Modus zwischen verschiedenen Rechnern (Sender und Empfänger müssen sich nicht kennen und nicht gleichzeitig online sein) und Lastverteilung über mehrere Rechner, die aus einer Jobqueue jeweils eine Auftragsnachricht erhalten, Chatsysteme, Logging, zentrale persistente Speicherung von Nachrichten und Objekten. Message Broker Lösungen sind mit sehr hoher Ausfallsicherheit und Zuverlässigkeit möglich, auch Transaktionen werden vom JMS Standard und den Habari Client Libraries unterstützt.
Wie steil ist die Lernkurve?
Die bestehende Java API für Message Service Provider (JMS) wird in den Libraries weitgehend abgebildet, durch diese sehr gut dokumentierte und logisch aufgebaute Abstraktionsschicht arbeitet man mit einfachen Interfaces. Um zum Beispiel eine Connection auf einen lokalen Server zu erzeugen, und über eine Session eine Queue anzusprechen, genügen wenige Zeilen Code:
Code: Alles auswählen
Connection := TBTJMSConnection.MakeConnection;
Session := Connection.CreateSession(False, amAutoAcknowledge);
Queue := Session.CreateQueue('TOOL.DEFAULT');
Connection.Start;
Nein, sofern der FPC Compiler mit Delphi-Kompatibilitätsflag gestartet wird. Habari Demo Versionen (Kommandozeilen- und GUI Anwendungen) sind auch für FPC und Lazarus vorhanden. Die Kompatibilität von FPC und die Unterstützung von FPC durch Drittanbieter (Indy, Synapse) macht damit den plattformunabhängigen Einsatz dieser Libraries möglich.
Was bedeutet Habari?
Habari stammt aus der Suaheli Sprache und bedeutet 'Nachricht'.
Weitere Informationen
Apache ActiveMQ: http://activemq.apache.org/
Open Message Queue: https://mq.dev.java.net/
Java Message Service (JMS): http://de.wikipedia.org/wiki/Java_Messa ... e_Provider
Habari Client Libraries: http://www.mikejustin.com/habari.html
Feedback?
Über Feedback, Fragen und Vorschläge (z.B. wie Habari zugunsten der Open Source Idee eingesetzt werden könnte) freue ich mich natürlich. Adresse siehe http://www.mikejustin.com/#impressum" onclick="window.open(this.href);return false;
Cheers,
Michael Justin