代码之家  ›  专栏  ›  技术社区  ›  Coffe Cold

为什么HTTP不是消息传递协议?(根据RabbitMQ)

  •  4
  • Coffe Cold  · 技术社区  · 7 年前

    在这个 RabbitMQ documentation 、MQTT、AMQP和STOMP被称为受支持的消息协议。如果你考虑 the differences between MQTT, AMQP and STOMP ,我完全可以理解。 然而,在本文的最后,它变得令人困惑。这是关于HTTP的。本段指出,“HTTP不是课程,也不是消息传递协议”。我原以为RabbitMQ也会以某种方式直接支持HTTP,但只支持“低容量消息传递”(例如诊断)和直接在HTML中使用。 如果世界上有一半的人使用HTTP web api服务,那么为什么HTTP不能在消息传递协议之间共享呢。为什么HTTP不是消息传递协议?RabbitMQ对消息传递协议的定义是什么?

    1 回复  |  直到 7 年前
        1
  •  7
  •   Remus Rusanu    7 年前

    HTTP完全属于同步 request-response 协议类别。这与异步正好相反 message passing 典型协议 Message-Oriented Middleware .

    将HTTP用于web api服务的“半个世界”并不将其用作 loose coupled 消息传递 基于web API服务,但作为基于请求-响应的紧密耦合API。

    消息传递协议具有协议定义和实现提供的特定特征(至少一次、恰好一次、最多一次、按顺序正好一次等)。正在尝试执行 消息传递 通过HTTP可以在一个层上快速转移到复制这些需求(重试、序列号、重复处理等) 在上面 HTTP和将HTTP弃用到传输层,而传输层从 消息传递 观点。