消息协议
AMQP(高级消息队列协议)的重要组件
- Message:消息服务器处理的基本单元
- Publisher(生产者):向交换机发布消息的程序
- Exchange(交换器):接受生产者消息并传递给消息路由的队列
- Binding:将消息队列与交换器绑定关联
- VirtualHost:它是消息队列以及相关对象的集合
- Broker(消息代理):表示消息队列服务器实体,接受客户端连接,实现 AMQP 消息 队列和路由功能的过程
- Routing Key:确定VirtualHost与message的路由关系
- Queue:用来保存消息
- Connection:客户端与队列服务器之间建立的TCP连接
- Channel:AMQP的命令都是通过信道发布的;多路复用TCP连接中的双向数据流通道,Channel是建立在真实的TCP连接中的虚拟连接
- Consumer:从消息队列获取消息的程序
- AMQP基础模型:
AMQP协议分层
- 0-9分为功能层,传输层;
- 功能层定义了许多命令
- 传输层将功能层传递的消息进行处理,包括括信道用、同步、内容编码、 跳检测、数据表和错误处理
- 0-10分为模型层,会话层,传输层;
- 模型层提供了命令
- 会话层将命令从客户端传递给服务器,这个过程提供了可靠、同步机制、错误处理
- 传输层负责提供帧处 信道复用 、错误检测和数据表示
MQTT(消息队列遥测传输)
- MQTT的特点是轻量、简单、开放和易于实现。正因为这些特点,使它常应用于很多机器计算 能力有限、低带宽、网络不可靠的远程通信应用场景中
- MQTT基础模型:
MQTT协议的基础组件
- 网络连接:提供有序,可靠,基于字节流的双向传输
- 应用消息:指传输的应用数据,包含两个部分,指主题、负载
- 主题:应用消息的类型
- 负载:指订阅者具体接受的消息
- 客户端:指使用MQTT协议的设备或者程序
- 服务端:它作为发送消息的客户端束与请求订阅的客户端之间的中介
- 会话:客户端与服务端建立连接之后就是会话
- 订阅:订阅与会话关联,包含一个主题过滤器与服务质量等级
- 主题名:指消息上面的标签,会匹配服务器的多个订阅者客户端
- 主题过滤器:订阅中包含的表达式,表示相关联的一个或者多个主题
- MQTT控制报文:通过网络连接发送的信息数据包
其余的消息协议
- STOMP(流文本定向消息协议),XMPP(可拓展通信与表示协议),等
JMS
- JMS不属于任何一种消息协议,它是基础消息协议的抽象;类似于JDBC
- JMS中的消息队列模型
- 点对点模型:
- 发布/订阅者模型:
- JMS中主要的基本概念
- 生产者:点对点模型指生产者;订阅者发布者指发布者
- 消费者:点对点模型指消费者;订阅者发布者指订阅者
- 客户端:指生产、消费消息的Java程序或者对象
- 队列:容纳消息等待消费的区域,点对点模型的队列
- 主题:支持一种消息发布给多个订阅者的机制,是订阅者\发布者模式的主题
- 消息:JMS中传输的数据对象