Skip to content

AMQP协议

一、介绍

AMQP(advanced message queuing protocol)在2003年时被提出,最早用于解决金融领不同平台之间的消息传递交互问题,就是是一种协议,兼容JMS。 更准确说的链接协议 binary- wire-level-protocol 直接定义网络交换的数据格式,类似http

具体的产品实现比较多,RabbitMQ就是其中一种

二、特性

  • 独立于平台的底层消息传递协议

  • 消费者驱动消息传递

  • 跨语言和平台的互用性、属于底层协议

  • 有5种交换类型direct,fanout,topic,headers,system

  • 面向缓存的、可实现高性能、支持经典的消息队列,循环,存储和转发

  • 支持长周期消息传递、支持事务(跨消息队列)

三、AMQP和JMS的区别

  • AMQP不从API层进行限定,直接定义网络交换的数据格式,这使得实现了AMQP的provider天然性就是跨平台,比如Java语言产生的消息,可以用其他语言比如python的进行消费

  • AQMP可以用http来进行类比,不关心实现接口的语言,只要都按照相应的数据格式去发送报文请求,不同语言的client可以和不同语言的server进行通讯

  • 消息类型

    • JMS消息类型:TextMessage/ObjectMessage/StreamMessage等

    • AMQP消息类型:Byte[]

四、MQTT

MQTT: 消息队列遥测传输(Message Queueing Telemetry Transport )

计算性能不高的设备不能适应AMQP上的复杂操作,MQTT它是专门为小设备设计的,MQTT主要是是物联网(IOT)中大量的使用

特性

  • 内存占用低,为小型无声设备之间通过低带宽发送短消息而设计

  • 不支持长周期存储和转发,不允许分段消息(很难发送长消息),消息实际上是短暂的(短周期)

  • 支持主题发布-订阅、不支持事务(仅基本确认)

  • 简单用户名和密码、不支持安全连接、消息不透明