node.js - 从 STOMP/AMQP 中选择哪一个?

标签 node.js jms amqp stomp

我使用 node.js 作为 jms 主题的客户端。有两种协议(protocol)可用于在主题上建立连接。 论文是 Stomp 和 AMQP。我在 http://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol 上阅读了有关它们的简要信息 和 http://en.wikipedia.org/wiki/Streaming_Text_Oriented_Messaging_Protocol .两者似乎都是线级协议(protocol),即 作为八位字节流通过网络发送的数据。我没有找到任何 应该首选哪一个的具体原因。如果有人可以阐明它,那将很有帮助。

另一点是协议(protocol)都自豪地声明它们是可互操作的。互操作术语是否意味着如果有人 想要取消特定的消息代理实现,比如 apache active MQ,而是想要插入 Websphere MQ,transition 会很流畅(前提是同时支持 AMQP/STOMP 或任何其他线级协议(protocol))?

最佳答案

您可能会看到性能差异(请参阅 this benchmark,这取决于许多因素,包括消息大小和队列条目的持久性要求。

通常情况下,还需要考虑其他因素,特别是如果您的邮件大小/数量/等。并不意味着在性能方面有明显的赢家,并且没有一种协议(protocol)能以另一种方式满足您的功能要求。

This article特别提示在不同的 STOMP 代理实现中可能存在更多碎片。引用那篇文章

STOMP...uses a SEND semantic with a “destination” string. The broker must map onto something that it understands internally such as a topic, queue, or exchange. Consumers then SUBSCRIBE to those destinations. Since those destinations are not mandated in the specification, different brokers may support different flavours of destination. So, it’s not always straightforward to port code between brokers.

至少对于 AMQP(它吹捧互操作性是其最重要的优势之一),您在切换提供程序/语言时应该遇到的唯一问题是设置所述新提供程序时固有的问题。例如,我读到 ZeroMQ 可能比 RabbitMQ 承担更多的配置工作,但这并不是因为 AMQP 的任何特定属性。

关于node.js - 从 STOMP/AMQP 中选择哪一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13377992/

相关文章:

javascript - node.js TypeError : path must be absolute or specify root to res. sendFile [无法解析JSON]

java - java应用程序之间的快速对象共享

python - 如何使用 Kombu 指定 AMQP correlationId?

JMS 具有强制可扩展性(Active-Active-...-Active)和排序?

tomcat - 如何在 tomcat 上优雅地关闭 ActiveMQ session 线程

spring - Spring AMQP 中的发布者返回是什么

ruby - 使用单个应用程序监控多个 RabbitMq 订阅

javascript - NextJS,Express,WebSocket 握手期间出错 : Unexpected response code: 200

node.js - 我是否可以在 synaptics.js Node 中重用 LSTM RNN 的训练模型?

Node.js 应用程序有周期性的缓慢和/或超时(不接受传入的请求)