11

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

另一点是协议都以声明它们是可互操作的为荣。互操作性术语是否意味着如果有人想取消特定的消息代理实现说 apache active MQ 而想要插入 Websphere MQ ,转换将是平滑的(前提是同时支持 AMQP/STOMP 或任何其他有线 levl 协议)?

4

1 回答 1

2

您可能会看到性能上的差异(请参阅此基准测试基于许多因素,包括消息大小和队列条目的持久性要求。

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

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

STOMP ...使用带有“目标”字符串的 SEND 语义。代理必须映射到它内部理解的东西,例如主题、队列或交换。然后消费者订阅这些目的地。由于规范中没有强制要求这些目的地,因此不同的代理可能支持不同风格的目的地。因此,在代理之间移植代码并不总是那么简单。

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

于 2013-06-17T18:06:17.963 回答