为什么RabbitMQ不通过HTTP而不是STOMP支持AMQP?

时间:2015-08-31 14:44:52

标签: rabbitmq amqp stomp

我理解HTTP是基于文本的,而AMQP是基于二进制的,但为什么不能通过HTTP实现AMQP(意味着每个二进制消息都是作为HTTP有效负载发送的)?我假设它是因为每次来回不断地序列化/反序列化会很慢吗?

STOMP协议如何解决这个问题?我知道它将二进制到文本转换移动到服务器,但是以"消息为代价#34;更大,所以它真的比可以序列化/反序列化AMQP的JS客户端快得多吗?

1 个答案:

答案 0 :(得分:0)

虽然这个问题主要是基于意见的,但请查看AMQP Protocol Specification中的 1.2.4高级消息队列协议(AMQP)部分:

  

AMQ模型的设计受这些要求的驱动:

     
      
  • 保证符合要求的实施之间的互操作性。
  •   
  • 明确控制服务质量。
  •   
  • 在命名方面保持一致和明确。
  •   
  • 允许通过协议完整配置服务器接线。
  •   
  • 使用可轻松映射到应用程序级API的命令符号
  •   
  • 要明确,所以每项操作都只做一件事。
  •   
     

AMQP传输层的设计是由这些主要驱动的   要求,没有特别的顺序:

     
      
  • 紧凑,使用快速打包和解包的二进制编码。
  •   
  • 处理任何大小的邮件,没有明显限制。
  •   
  • 通过单个连接传输多个频道。
  •   
  • 长寿,没有明显的内在限制。
  •   
  • 允许异步命令管道。
  •   
  • 轻松扩展以应对新的和变化的需求。
  •   
  • 与未来版本向前兼容。
  •   
  • 使用强大的断言模型进行修复。
  •   
  • 对编程语言保持中立。
  •   
  • 适合代码生成过程。
  •   

为了更好地理解(例如,为什么一个决策优先于另一个决策)强烈建议阅读整个规范。