Frage

Hintergrund

Ich habe zwei Dienste, die miteinander über eine Nachrichtenwarteschlange kommunizieren müssen. Eines ist ein Vermächtnis Dienst geschrieben in PHP und der andere ist in Java. Früher als später, wird der PHP-Dienst in Java neu geschrieben werden. Die aktuelle Art, wie sie miteinander kommunizieren, ist zu einer gemeinsamen Datenbank, die die andere Service Umfragen zu schreiben. Das ist, was ich versuche von wegzukommen und ersetzen mit einer Nachrichten-Warteschlange.

Problem

Die Kommunikation arbeite ich auf der rechten Seite ist jetzt von der PHP-Dienst auf dem Java-Service. Es braucht ein relativ komplexes Objekt (Strings und und ganze Zahlen und Listen und Karten von Strings und ganzen Zahlen) zu senden. Idealerweise würde die Lösung in PHP und ideal in Java bearbeitbar sein, als dass das Erbe dieses Projektes sein wird.

Mögliche Lösungen

    1.
War es hilfreich?

Lösung

Die Lösung, die ich habe kommen mit ist Nachrichten von PHP / Stomp einzureihen die jms-json-object Transformation. Die Nachrichten werden speziell JSON gefertigt, so dass, wenn sie in Java unter Verwendung von readObject aus der Warteschlange entfernt werden, können sie zu einem vollständigen Objekt rekonstruiert werden unter Verwendung von XStream . Diese Rekonstruktion geschieht intern ActiveMQ und ich muss nur dafür sorgen, dass die notwendige Aliase und Wandler vorhanden sind. Als wir endlich die PHP-Komponente mit Java ersetzen, wird eine Nachricht zu senden writeObject nur eine Frage der Verwendung.

Andere Tipps

Es gibt ein STOMP-Client für PHP,

http://pecl.php.net/package/stomp

Aus meiner Sicht sollten Sie Komponente Interaktionen von spezifischen Implementierungen frei halten. ActiveMQ ist Buggy und viele Systeme entfernt es für RabbitMQ oder Sun OpenMQ. Sie haben Codierung „Nachricht senden“ Routinen in PHP zu vermeiden, erstellen Sie „Sendmessage“ Servlet statt, und die Verwendung curl JSON-codierte Nachricht zu schreiben. Das Servlet wird dann Anschluss Fabrik usw. Mit einem wenig verwendet Overhead werden Sie PHP-Komponente von jedem mq-Server-spezifischen Code befreien. Sie können Textmessage mit JSON'ed Last verwenden, codieren, und es leicht mit Jackson Decodierung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top