消息中间件采用的不是http协议,而是常见的消息中间件协议 有:OpenWire、AMQP、MQTT、kafka、OpenMessage协议;
为什么消息中间件不直接使用http协议?
1.因为http请求报文头和响应报文头是比较复杂的,包含了cookie,数据的加密解密,状态码,响应码等附加的功能,但是对于一个消息而言,我们并不需要这么复杂,也没有这个必要性,它其实就是负责把数据传递、存储、分发就行,一定要追求的是高性能,尽量简洁、快速。
2.大部分情况下http大部分都是短链接,在实际的交互过程中,一个请求到响应很有可能会中断,中断以后就不会进行持久化,就会造成请求的丢失,这样就不利于消息中间件的业务场景,因为消息中间件可能是一个长期的获取消息的过程,出现问题和故障要对数据或消息进行持久化等,目的是为了保证消息和数据的高可靠和稳键的运行。
-
AMQP协议
AMQP:(全称:Advanced Message Queuing Protocol)是高级消息队列协议,由摩根大通集团联合其他公司共同设计,是一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。
Erlang中实现有RabbitMQ等。
特性:1.分布式事务支持。
2.消息的持久化支持。
3.高性能和高可靠的消息处理优势。 -
M