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

时间:2018-02-18 12:06:22

标签: http rabbitmq amqp stomp

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

1 个答案:

答案 0 :(得分:5)

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

世界的一半'使用HTTP进行Web api服务不会将其用作基于loose coupled 消息传递的Web API服务,而是作为基于请求 - 响应的紧密耦合API。

消息传递协议具有某些特征(至少一次,完全一次,最多一次,完全一次有序等),这些特性由协议定义和实现提供。尝试通过HTTP进行消息传递快速转换为在上面 HTTP层复制这些要求(重试,序列号,重复处理等),并将HTTP弃用到提供的传输层从消息传递的角度来看,价值很小。