RabbitMQ 笔记(一)
消息队列
队列协议
一、网络协议的三要素
- 语法
- 语义
- 时序
消息中间件采用的并不是http协议,而常见的消息中间件协议有:OpenWire、AMQP、MQTT、Kafka、OpenMessage
为什么消息中间件不直接使用http协议?
- http协议比较复杂,包含了cookie,数据加密,状态码、响应码等附加的功能,消息中间件不需要这么饿复杂,它主要负责数据传递,存储,分发。追求的是高性能,因此要简洁、快速。
- 大部分情况下http是短连接,实际交互中,一个请求响应可能会终端,中断后无法持久化,造成数据丢失,不利于业务场景。因此消息中间件是一个长期的获取消息的过程,出现问题和故障要对数据或消息进行持久化等,保证数据的高可靠和稳健运行。
二、AMQP协议
高级消息队列协议
开发公司: 摩根大通 开发语言:Erlang
特点:
- 分布式事务支持
- 消息的持久化支持
- 高性能和高可靠的消息处理优势
三、MQTT协议
即使通讯协议、物联网系统架构中的重要组成部分
开发公司: IBM
特点:
- 轻量
- 结构简单
- 传输快、不支持事务
- 没有持久化设计
应用场景:
- 适用于计算能力有限
- 低带宽
- 网络不稳定的场景
四、Kafka协议
性能最高
基于TCP/IP的二进制协议,消息内部通过长度来分割,由一些基本数据类型组成
特点:
- 结构简单
- 解析速度快
- 无事务支持(在分布式场景中,显得无力)
- 有持久化设计

浙公网安备 33010602011771号