0MQ是协议,层还是两者兼而有之?我可以和STOMP一起使用吗?

时间:2010-07-14 15:24:01

标签: messaging websocket zeromq stomp

我已经陷入困境,对STOMP和0MQ都不熟悉,但简而言之,我希望通过PHP MOM或许多PHP MOM的交互来促进客户端与浏览器之间的客户端通信。我正在考虑使用WebSocket在html5浏览器客户端和MOM端点之间提供持久的双工连接(如果可用),然后使用这些端点来促进任意数量的浏览器客户端之间的通信,这可能与1-1相关,1-很多很多的关系。

MOM端点可以为了不同的目的与其他服务器或其他服务器通信,我相信0MQ可能是在这些服务器之间快速交换信息的可行方式。作为客户端之间消息传递的协议,STOMP看起来很好(虽然我知道协议定义存在一些问题)....

....所以这是我的困惑点。要使用STOMP,MOM必须是STOMP代理,如果它是STOMP代理,那么当0MQ是“无代理”消息传递层时,我不会打败使用它们的目的吗?

为了澄清,我正在考虑0MQ用于MOM - MOM通信,STOMP用于客户端 - 客户端通信。

除非当然,我可以通过某种方式重新利用0MQ来促进客户与客户之间的沟通?我想我的真正混淆是0MQ-它是一个轻量级的消息传递层,而不是一个协议,或两者兼而有之?如果只是一层,我不能使用0MQ来传输STOMP消息吗?

如果有人能为我在0MQ上发光,我会非常感激 - 谢谢!

1 个答案:

答案 0 :(得分:2)

0MQ提供了一个类似服务器的类似套接字的API,您可以通过它覆盖自己的协议。 0MQ传输简单的未解释的二进制数据(尽管一些语言绑定添加了对特定序列化的支持,如python pickling或JSON)。

与普通套接字不同,0MQ套接字可以是多对一,一对多。

0MQ也有消息传递模式的概念 - 例如,您可以定义REQ / REP套接字,它强制执行约束,每个请求必须跟一个响应 - 您不允许连续发送两个请求。还有其他各种模式可以适应不同的情况。

请参阅0MQ GuideAPI

所以回答你的一些问题 - 0MQ基本上是一个消息传递层,原则上你应该能够像普通网络套接字一样通过0MQ套接字发送STOMP。但是,我不确定Web客户端是否可以直接使用0MQ - 它需要语言绑定,并且需要提供ZMQ本机库。我认为这可以用于Web客户端的使用。