MQTT协议

原理

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建于TCP/IP协议上。

  • 三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。其中,消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。

  • 传输的消息分为:主题(Topic)和负载(payload)两部分,Topic,可以理解为消息的类型,订阅者订阅(Subscribe)后,就会收到该主题的消息内容(payload)

MQTT协议中的方法

  • Connect,等待与服务器建立连接
  • Disconnect,等待MQTT客户端完成所做的工作,并与服务器断开TCP/IP会话
  • Subscribe,等待完成订阅
  • UnSubscribe,等待服务器取消客户端的一个或多个topics订阅
  • Publish,MQTT客户端发送消息请求,发送完成后返回应用程序线程

#常见mqtt服务器

EMQTT

号称百万级开源MQTT消息服务器,基于Erlang/OTP语言平台开发,支持大规模连接和分布式集群,发布订阅模式的开源MQTT消息服务器。

Mosquitto

一款实现了消息推送协议MQTT v3.1的开源消息代理软件,提供轻量级的、支持可发布/可订阅的消息推送模式。

Apollo

一个代理服务器,在ActiveMQ基础上发展而来,可以支持STOMP、AMQP、MQTT、Openwire、SSL和WebSockets等多种协议,并且Apollo提供后台管理页面,方便开发者管理和调试。

Qos

  • qos0: 仅发一次包,是否收到完全不管,适合那些不是很重要的数据
  • qos1: 也就是当client没收到service的puback或者service没有收到client的puback,那么就会一直发送
  • qos2: publisher和broker进行了缓存,其中publisher缓存了message和msgID,而broker缓存了msgID,两方都做记录所以可以保证消息不重复,并不是多个订阅者只有一个消费

发送订阅qos

服务器只会按pub和sub两者qos等级最小的那个qos规则来发送消息。

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×