全称MessageQueue消息队列,主要是用于程序和程序之间异步通信、代码解耦、流量削峰
JMS(Java Message Service)是由Sun公司早期提出的消息API标准,旨在为java应用提供统一的消息操作,包括create、send、receive。它类似于JDBC(Java Database Connectivity)。这里JDBC 是可以用来访问许多不同关系数据库的 API。
- JMS或者NMS(.NET语言的消息服务)都没有标准的底层协议,它们可以在任何底层协议上运行,但是API是与编程语言绑定的,AMQP解决了这个问题,它使用了一套标准的底层协议。
- AMQP(Advanced Message Queuing Protocol)在2003年时被提出,最早用于解决金融领域不同平台之间的消息传递交互问题,就是是一种协议,兼容JMS
- 更准确说的链接协议 binary- wire-level-protocol 直接定义网络交换的数据格式,类似http
- AMQP不从API层进行限定,直接定义网络交换的数据格式,这使得实现了AMQP的provider天然性就是跨平台
- 比如Java语言产生的消息,可以用其他语言比如python的进行消费
- AQMP可以用http来进行类比,不关心实现接口的语言,只要都按照相应的数据格式去发送报文请求,不同语言的client可以和不同语言的server进行通讯
- JMS消息类型:TextMessage、ObjectMessage、StreamMessage等
- AMQP消息类型:Byte[]
ActiveMQ:ActiveMQ
Kafka:Apache Kafka
RocketMQ:RocketMQ · 官方网站 | RocketMQ
RabbitMQ:Messaging that just works — RabbitMQ