2010-07-14 3 views
3

Je me suis lié de noeuds, étant nouveau à la fois STOMP et 0MQ, mais en un mot, je veux faciliter la communication client à client dans le navigateur avec l'interaction d'un MOM PHP ou un certain nombre de MOM PHP. J'envisage d'utiliser WebSocket pour fournir des connexions duplex persistantes (si disponibles) entre les clients de navigateur html5 et les points de terminaison MOM, puis d'utiliser ces points de terminaison pour faciliter la communication entre un nombre quelconque de clients de navigateur, qui peuvent être liés par 1-1, 1- beaucoup, beaucoup-1 relations. Les points d'extrémité MOM peuvent communiquer avec d'autres serveurs, ou entre eux, à des fins différentes, et je crois que 0MQ peut être un moyen viable d'échanger rapidement des informations entre ces serveurs. Comme un protocole pour la messagerie entre les clients, STOMP semble bon (même si je suis conscient de certains problèmes avec la définition des protocoles) ....0MQ est-il un protocole, une couche ou les deux? Puis-je l'utiliser avec STOMP?

.... alors voici mon point de confusion. Pour utiliser STOMP, le MOM devrait être un courtier STOMP, et s'il s'agit d'un courtier STOMP, alors que 0MQ est une couche de messagerie 'sans agent', ne serait-il pas contraire à l'objectif d'utiliser les deux? Pour clarifier, je pense à 0MQ pour la communication MOM-MOM et à STOMP pour la communication client-client.

À moins bien sûr, il y a une façon dont je pourrais réutiliser 0MQ pour faciliter les communications client-client? Je suppose que ma vraie confusion est avec 0MQ - est-ce une couche de messagerie légère, et non un protocole, ou les deux? Si c'est une couche seulement, je ne pourrais pas utiliser 0MQ pour transporter des messages STOMP?

Si quelqu'un pouvait faire la lumière sur 0MQ pour moi, je serais très reconnaissant - merci!

Répondre

2

0MQ fournit une API de type socket sans serveur, sur laquelle vous pouvez superposer vos propres protocoles. 0MQ transporte des données binaires non interprétées (bien que certaines des liaisons de langage ajoutent un support pour des sérialisations spécifiques comme python pickling ou JSON). Contrairement aux prises normales, les prises 0MQ peuvent être plusieurs à un, un-à-plusieurs.

0MQ a également la notion de modèles de messagerie - par exemple, vous pouvez définir des sockets REQ/REP, qui imposent la contrainte que chaque requête doit être suivie par une réponse - vous n'êtes pas autorisé à envoyer deux requêtes dans une rangée. Il existe différents autres modèles pour s'adapter à différentes situations.

Voir la 0MQ Guide et API

Donc, pour répondre à une partie de votre question - 0MQ est essentiellement une couche de messagerie, et en principe, vous devriez être en mesure d'envoyer STOMP sur des sockets 0MQ comme pour les prises de réseau normales. Cependant, je ne suis pas sûr qu'un client Web puisse utiliser 0MQ directement - il a besoin de liaisons de langage et les bibliothèques natives ZMQ doivent être disponibles. Je pense que cela exclut l'utilisation du client Web.

Questions connexes