4

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

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

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

设想:

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

我测试了两者,发生的情况是:

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

问题:

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

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

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

  3. 我的简单解释是浏览器无法处理如此多的顺序消息,而 nodejs 可以很好地处理这一点,而 rabbitmq web stomp 则不能。但也只是猜测。这个对吗?如果是这样,我该如何解决?

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

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

感谢您的任何回答。

此致,

爱德华多

4

1 回答 1

0

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

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

于 2012-12-02T12:16:22.317 回答