Pregunta

Fondo

Tengo dos servicios que necesitan comunicarse entre sí a través de una cola de mensajes. Uno de ellos es un servicio legado escrito en PHP y el otro es en Java. Más pronto que tarde, el servicio de PHP será reescrito en Java. La forma actual en que se comunican entre sí es escribir en una base de datos compartida, que las otras encuestas de servicio. Esto es lo que estoy tratando de alejarse de y reemplazar con una cola de mensajes.

Problema:

La comunicación que estoy trabajando en este momento es del servicio de PHP para el servicio de Java. Se necesita enviar un objeto relativamente compleja (y cadenas y números enteros y las listas y mapas de cadenas y enteros). Idealmente, la solución sería viable en PHP e ideal en Java, como que va a ser el legado de este proyecto.

Posibles soluciones

    1.
¿Fue útil?

Solución

La solución que yo he llegado con es a poner en cola mensajes desde PHP / pisa fuerte usando la transformación jms-json-object. Los mensajes están especialmente diseñados JSON tal que cuando están quitados de en Java utilizando readObject, pueden ser reconstruidos a un objeto completo usando xstream . Esta reconstrucción sucede interno para ActiveMQ y sólo tengo que asegurarse de que la necesaria alias y convertidores están en su lugar. Cuando finalmente reemplazar el componente PHP con Java, el envío de un mensaje sólo será una cuestión de usar writeObject.

Otros consejos

Hay un cliente STOMP para PHP,

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

En mi opinión usted debe tener interacciones componente libre de implementaciones específicas. ActiveMQ está libre de errores y muchos sistemas eliminado en favor de RabbitMQ o Sun OpenMQ. Hay que evitar la codificación "envían el mensaje" rutinas en PHP, crear "SendMessage" servlet en su lugar, y el rizo uso para enviar mensajes JSON-codificada. El servlet utilizará entonces fábrica de conexiones, etc. Con un poco de sobrecarga va a liberar componente PHP desde cualquier código específico mq-servidor. Es posible utilizar TextMessage con la carga JSON'ed, codificación y decodificación fácilmente con Jackson.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top