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

Cof*_*old 3 http stomp amqp rabbitmq

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

Rem*_*anu 5

HTTP完全属于同步请求 - 响应协议类别.这与面向消息的中间件的典型异步消息传递协议完全相反.

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

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