Domanda

Sfondo

Ho due servizi che hanno bisogno di comunicare tra loro su una coda di messaggi. Uno è un servizio legacy scritto in PHP e l'altro è in Java. Prima che poi, il servizio di PHP verrà riscritto in Java. Il modo corrente che comunicano tra di loro è quello di scrivere in un database condiviso, che gli altri sondaggi di servizio. Questo è quello che sto cercando di allontanarsi da e sostituirla con una coda di messaggi.

problema

La comunicazione su cui sto lavorando in questo momento è dal servizio PHP per il servizio di Java. Ha bisogno di inviare un oggetto relativamente complesso (stringhe e numeri interi e ed elenchi e mappe delle stringhe e numeri interi). Idealmente, la soluzione sarebbe praticabile in PHP e ideale in Java, come che sta per essere l'eredità di questo progetto.

possibili soluzioni

    1.
È stato utile?

Soluzione

La soluzione che mi è venuta in mente è quello di accodare i messaggi di PHP / Stomp usando la trasformazione jms-json-object. I messaggi sono appositamente predisposto JSON in modo tale che quando sono levati dalla coda in Java utilizzando readObject, possono essere ricostruiti a un oggetto completo utilizzando XStream . Questa ricostruzione accade interna alla ActiveMQ e devo solo fare in modo che la necessaria alias e convertitori sono in atto. Quando finalmente sostituire il componente PHP con Java, l'invio di un messaggio sarà solo una questione di usare writeObject.

Altri suggerimenti

C'è un client STOMP per PHP,

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

A mio avviso si dovrebbe tenere le interazioni componente gratuito da implementazioni specifiche. ActiveMQ è bacato e molti sistemi rimosso in favore di RabbitMQ o Sun OpenMQ. Si deve evitare di codifica "trasmettono il messaggio" routine in PHP, creare "SendMessage" servlet, invece, e l'uso curl per inviare un messaggio JSON-codificato. Il servlet utilizzerà quindi factory di connessione, ecc Con un po 'in testa si libera componente PHP da un codice specifico di mq-server. È possibile utilizzare TextMessage con carico JSON'ed, codifica e decodifica facilmente con Jackson.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top