Web to rabbitmq - stomp web plugin vs nodejs amqp plugin

时间:2012-09-12 19:12:28

标签: node.js rabbitmq stomp

我试图决定是否通过以下方式从网络连接到rabbitmq:

解决方案1. Rabbitmq stomp插件+ Rabbitmq web stomp插件+ Sockjs

解决方案2.通过amqp nodejs插件获取Rabbitmq + nodejs

情景:

a)我有一个订阅队列的网络应用程序 b)我有一个写入该队列的Java应用程序 c)我有一个浏览器打开解决方案1,另一个打开解决方案2

我测试了两者,发生了什么:

当我发送连续的10.000消息时,解决方案2比解决方案1快得多。解决方案2永远不会丢失连接。大多数情况下,解决方案1在随机时间内(在收到每条消息之前)失去连接。

问题:

  1. 我可以在解决方案1中更新任何限制配置吗?

  2. 解决方案1的问题是由于:Sockjs? stomp插件? stomp web插件?他们都是?我不明白为什么如果我在中间添加nodejs比在rabbitmq(rabbitmq stomp / rabbitmq web stomp插件)中嵌入的erlang插件快得多。

    注意:stomp插件或stomp web插件永远不会消失。它总是继续听他们的端口。

  3. 我的简单解释是浏览器无法处理如此多的顺序消息,而nodejs管理这个很好,而rabbitmq web stomp却没有。但这只是猜测。它是否正确?如果是这样,我该如何解决?

  4. 解决方案1不应该比解决方案2更好(在延迟方面)?

  5. 注意:如果我在发布者中添加每条消息发送之间5毫秒的差异,则此问题消失,解决方案1执行解决方案2(对于10.000条消息)。

    感谢您的回答。

    最诚挚的问候,

    爱德华

1 个答案:

答案 0 :(得分:0)

您正在使用不同的协议比较服务器(node.js)和borwser客户端,当然它们是非常不同的! STOMP协议对于为消息传递提供轻量级和简单的客户端非常有用,例如浏览器JS。

我猜,解决方案1可能因浏览器和SockJS使用的连接类型而有很大不同:XHR,WebSocket,IFrame ......