Question

Historique

J'ai deux services qui doivent communiquer entre eux sur une file d'attente de messages. L'un est un service de l'héritage écrit en PHP et l'autre est en Java. Tôt ou tard, le service PHP sera réécrite en Java. La façon actuelle, ils communiquent entre eux est d'écrire à une base de données partagée, que les autres sondages de service. Voilà ce que je suis en train de sortir de et le remplacer par une file d'attente de messages.

Problème

La communication je travaille en ce moment est du service PHP au service Java. Il a besoin d'envoyer un objet relativement complexe (chaînes et entiers et des listes et des cartes de chaînes et entiers). Idéalement, la solution serait réalisable en PHP et idéal en Java, comme cela va être l'héritage de ce projet.

Solutions possibles

    1.
Était-ce utile?

La solution

La solution que je suis venu avec est de messages de PHP enqueue / Stomp en utilisant la transformation de jms-json-object. Les messages sont JSON spécialement conçus de telle sorte que quand ils sont dequeued en Java en utilisant readObject, ils peuvent être reconstruits à un objet complet en utilisant XStream . Cette reconstruction se produit interne ActiveMQ et je dois vous assurer que le nécessaire alias et convertisseurs sont en place. Lorsque nous remplaçons enfin le composant PHP avec Java, l'envoi d'un message sera juste une question d'utiliser writeObject.

Autres conseils

Il y a un client STOMP pour PHP,

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

À mon avis, vous devriez garder les interactions composant gratuit de mises en œuvre spécifiques. ActiveMQ est buggy et de nombreux systèmes retiré en faveur de RabbitMQ ou Sun OpenMQ. Vous devez éviter le codage « envoyer un message » routines en PHP, créer « SendMessage » servlet au lieu, et boucle utiliser pour poster un message JSON-encodée. Le servlet utilisera ensuite l'usine de connexion, etc. Avec un peu de vous libérer en tête composants PHP à partir de tout code spécifique mq serveur. Vous pouvez utiliser TextMessage avec une charge JSON'ed, encodage et le décodage facilement avec Jackson.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top