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

Why is HTTP not a messaging protocol? (according to RabbitMQ)

在这个RabbitMQ documentation, MQTT, AMQP and STOMP are referred to as supported message protocols. If you consider the differences between MQTT, AMQP and STOMP中,这对我来说是完全可以理解的。 然而,在这篇文章的结尾,它变得令人困惑。那是关于 HTTP 的。本段指出 "HTTP is not a course not a messaging protocol"。我原以为 RabbitMQ 也会以某种方式直接支持 HTTP,但仅支持 'low volume messaging purposes'(例如诊断)并直接在 HTML 中使用。 如果半个世界使用 HTTP web api 服务,为什么 HTTP 不能在消息传递协议之间共享。为什么 HTTP 不是消息协议,RabbitMQ 使用的消息协议的定义是什么?

HTTP 完全属于同步 request-response protocols category. This is the very opposite of asynchronous message passing protocols typical of Message-Oriented Middleware

将 HTTP 用于 Web api 服务的 'half of the world' 并未将其用作基于 loose coupled 消息传递 的 Web API 服务,但作为紧密耦合的 request-response 基于 API.

消息协议具有某些特征(at-least-once、exactly-once、at-most-once、exactly-once-有序等),这些特征由协议定义和实现提供.尝试通过 HTTP 进行 消息传递 很快就会演变成在 HTTP 之上的层复制这些要求(重试、序列号、重复处理等)并弃用 HTTP从 消息传递 的角度来看,它提供的价值很小的传输层。