从STOMP / AMQP中select哪一个?

我使用node.js作为jms topic的客户端。有两个协议可用于在Topic上进行连接。 这些是Stomp和AMQP。 我在http://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol和http://en.wikipedia.org/wiki/Streaming_Text_Oriented_Messaging_Protocol上了解他们的简介。 两者似乎都是有线协议,即通过networking作为八位字节stream发送的数据。我没有发现任何一个应该被优选的具体原因。 如果有人能阐明它,这将是有益的。

还有一点是协议引以为傲的说他们互通。 互操作术语意味着如果有人想要脱离特定的消息代理实现说apache主动MQ,而是想要插入Websphere MQ,过渡将是平稳的(既提供支持AMQP / STOMP或任何其他有线协议)?

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

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

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

STOMP …使用“目标”string的SEND语义。 经纪人必须映射到内部理解的内容,如主题,队列或交换。 消费者然后订阅这些目的地。 由于这些目的地在规范中没有规定,不同的经纪人可能会支持不同的目的地。 所以,在代理之间移植代码并不总是直截了当的。

至less在AMQP(宣称互操作性是其最重要的优势之一)时,交换提供商/语言应该具有的唯一问题就是build立新的提供商所固有的问题。 例如,我读过ZeroMQ,可能比RabbitMQ需要更多的configuration工作,但这不是真正归因于AMQP特有的任何属性。