我理解HTTP是基于文本的,而AMQP是基于二进制的,但为什么不能通过HTTP实现AMQP(意味着每个二进制消息都是作为HTTP有效负载发送的)?我假设它是因为每次来回不断地序列化/反序列化会很慢吗?
STOMP协议如何解决这个问题?我知道它将二进制到文本转换移动到服务器,但是以"消息为代价#34;更大,所以它真的比可以序列化/反序列化AMQP的JS客户端快得多吗?
答案 0 :(得分:0)
虽然这个问题主要是基于意见的,但请查看AMQP Protocol Specification中的 1.2.4高级消息队列协议(AMQP)部分:
AMQ模型的设计受这些要求的驱动:
- 保证符合要求的实施之间的互操作性。
- 明确控制服务质量。
- 在命名方面保持一致和明确。
- 允许通过协议完整配置服务器接线。
- 使用可轻松映射到应用程序级API的命令符号
- 要明确,所以每项操作都只做一件事。
AMQP传输层的设计是由这些主要驱动的 要求,没有特别的顺序:
- 紧凑,使用快速打包和解包的二进制编码。
- 处理任何大小的邮件,没有明显限制。
- 通过单个连接传输多个频道。
- 长寿,没有明显的内在限制。
- 允许异步命令管道。
- 轻松扩展以应对新的和变化的需求。
- 与未来版本向前兼容。
- 使用强大的断言模型进行修复。
- 对编程语言保持中立。
- 适合代码生成过程。
为了更好地理解(例如,为什么一个决策优先于另一个决策)强烈建议阅读整个规范。