消息中间件02:消息协议

消息协议则是指用于实现消息队列功能时所涉及的协议。按照是否向行业开放消息规范文档,可以将消息协议分为开放协议私有协议。常见的开放协议有 AMQPMQTTSTOMPXMPP等。有些特殊框架(如Redis、Kafka、ZeroMQ)根据自身需要未严格遵循MQ规范,而是基于TCP/IP自行封装了一套协议,通过网络Socket接口进行传输,实现了MQ的功能。这里的协议可以简单地理解成对双方通信的一个约定,比如传过来一段字符流数据,其中第1个字节表示什么,第2个字节表示什么,类似这样的约定。下图常用消息协议:
在这里插入图片描述

AMQP

AMQP(Advanced Message Queuing Protocol,高级消息队列协议)是一个进程间传递异步消息的网络协议。

主要概念

Message(消息):从格式上看,消息包括一个内容头、一组属性和一个内容体。消息可以持久化。消息可以有优先级。
Publisher(消息生产者):是一个向交换器发布消息的客户端应用程序。
Exchange (交换器):用来接收消息生产者所发送的消息并将这些消息路由给服务器中的队列。
Binding (绑定):用于消息队列和交换器之间的关联。
Virtual Host (虚拟主机):它是消息队列以及相关对象的集合,是共享同一个身份验证和加密环境的独立服务器域。每个虚拟主机本质上都是一个mini版的消息服务器,拥有自己的队列、交换器、绑定和权限机制。
Broker(消息代理):表示消息队列服务器实体,接受客户端连接,实现AMQP消息队列和路由功能的过程。
Routing Key(路由规则):虚拟机可用它来确定如何路由一个特定消息。
Queue (消息队列):用来保存消息直到发送给消费者,它是消息的容器。一个消息可被投入一个或多个队列中。消息一直在队列里面,等待消费者连接到这个队列将其取走。
Connection (连接): 可以理解成客户端和消息队列服务器之间的一个TCP连接。
Channel(信道):仅仅当创建了连接后,若客户端还是不能发送消息,则需要为连接创建一个信道。信道是一条独立的双向数据流通道,它是建立在真实的 TCP 连接内的虚拟连接, AMQP 命令都是通过信道发出去的,不管是发布消息、订阅队列还是接收消息,它们都通过信道完成。一个连接可以包含多个信道,之所以需要信道,是因为 TCP 连接的建立和释放都是十分昂贵的,如果客户端的每一个线程都需要与消息服务器交互,如果每一个线程都建立了一个 TCP 连接,暂且不考虑 TCP 连接是否浪费,就算操作系统也无法承受每秒建立如此多的TCP连接。
Consumer (消息消费者): 从消息队列中取得消息的客户端应用程序。

AMQP模型

在这里插入图片描述

MQTT

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通信协议,该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当作传感器和制动器的通信协议。该协议是一个基于客户端-服务器的消息发布/订阅传输协议,其特点是轻量、简单、开放和易于实现。正因为这些特点,使它常应用于很多机器计算能力有限、低带宽、网络不可靠的远程通信应用场景中。
目前有很多 MQTT 消息中间件服务器,如下都是基于MQTT 协议的服务器端实现。
IBM WebSphere、MQ Telemetry、IBM MessageSight、Mosquitto、Eclipse Paho、emqttd Xively、
m2m.io、webMethods、Nirvana Messaging、RabbitMQ、Apache ActiveMQ、Apache Apollo、Moquette、HiveMQ、Mosca、Litmus Automation Loop、JoramMQ、ThingMQ、VerneMQ。

MQTT模型

在这里插入图片描述

STOMP

STOMP ( Streaming Text Orientated Messaging Protocol, 流文本定向消息协议〉是一个简单的文本消息传输协议, 它提供了一种可互操作的连接格式,允许客户端与任意消息服务器 (Broker)进行交互。在设计 STOMP 时借鉴了 HTTP 的一些理念,将简易性、 互通性作为其主 要设计哲学,这使得 STOMP 协议的客户端的实现很容易 。 最新的 STOMP 1.2 规范于 2012 年 10 月 22 日发布,可在Github上STOMP Protocol Specification, Version 1.2查看其协议文本。
STOMP 被设计成轻量级的协议, 使得很容易用其他语言来实现客户端和服务器端,因此它在多种语言和平台上得到广泛应用。目前有很多STOMP消息中间件服务器,如下都是STOMP协议的服务器端实现。
Apache Apollo、 Apache ActiveMQ、 RabbitMQ、 HornetQ、 Stampy、 StompServer。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值