我试图决定是否通过以下方式从网络连接到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的问题是由于:Sockjs? stomp插件? stomp web插件?他们都是?我不明白为什么如果我在中间添加nodejs比在rabbitmq(rabbitmq stomp / rabbitmq web stomp插件)中嵌入的erlang插件快得多。
注意:stomp插件或stomp web插件永远不会消失。它总是继续听他们的端口。
我的简单解释是浏览器无法处理如此多的顺序消息,而nodejs管理这个很好,而rabbitmq web stomp却没有。但这只是猜测。它是否正确?如果是这样,我该如何解决?
解决方案1不应该比解决方案2更好(在延迟方面)?
注意:如果我在发布者中添加每条消息发送之间5毫秒的差异,则此问题消失,解决方案1执行解决方案2(对于10.000条消息)。
感谢您的回答。
最诚挚的问候,
爱德华
答案 0 :(得分:0)
您正在使用不同的协议比较服务器(node.js)和borwser客户端,当然它们是非常不同的! STOMP协议对于为消息传递提供轻量级和简单的客户端非常有用,例如浏览器JS。
我猜,解决方案1可能因浏览器和SockJS使用的连接类型而有很大不同:XHR,WebSocket,IFrame ......