MQTT初步研究文档

一、mqtt介绍:

         与基于文本的协议(如:HTTP、STOMP)和传统的二进制协议(如:AMQP)不同,mqtt是一种压缩的二进制协议。协议已经发布了是免费的,但是现在还没有被正式组织承认,因此其还是一个非正式的协议;但是基于其轻量级、简单易用、易于实现等特点,现在有广泛使用:比如医疗、航空等。目前对mqtt做出重大贡献的有IBM公司,而且IBM公司基于mqtt开发出了一系列的产品。

         mqtt定义:为一个轻量级的,基于代理的发布—订阅的消息传输协议。

二、mqtt适用范围:

         基于其优良的特点,目前主要适用范围如下:

1、  一对多的消息发布订阅模式

2、  消息的异步传输

3、  低带宽、不可靠网络中消息传输

4、  有限设备(比如:设备老化、容量有限、以前的旧的老的设备)

三、mqtt一些特性:

1、  代理服务器:因为mqtt是基于代理的,所以需要一个代理服务器对发布或者订阅的消息进行中转,目前我们使用的是Apache Apollo 1.6。在Apollo1.6以前的版本中,对mqtt的支持是以插件的方式实现的,而在该版本中mqtt作为服务器集成的一部分不需要再单独的加入mqtt的插件。需要注意的是:在安装该服务器的实例时最好不要将其安装到和该服务器相同的目录下面(官方文档上说的是便于以后升级)。另外一点需要说明的是:在以前的版本中没有基于安全的服务,该版本提供了用户的概念,客户端通过服务器发布和订阅信息时需要使用服务器中的配置的用户和对应的密码才能够进行相应的操作,否则报错(说明:改用户和业务里面的用户不同,其本质是服务器里面配置的可以登录服务器的用户即使是不存在客户端该用户也能够登录服务器,其只是一个服务器自带的一个对本身访问权限的功能)。在发布和订阅连接服务器之前就需要设置用户名和密码,发布信息的用户可以和接收信息的用户不一样。

关于服务器的详细信息:http://activemq.apache.org/apollo/

2、  保留信息(Topic retained message):发布信息的时候将该属性设置为true时,那么该发布的主题就会在服务器的session中保存,即使是在订阅该主题前发布已经关闭,订阅也能及时的收到该主题的信息。

3、  消息等级(Reliable messaging):在这里消息的等级表示消息传播的可靠性,等级越高消息传播就越可靠。mqtt中消息有三种等级:at most once(Qos=0)、at least once(Qos=1)、Exactly once(Qos=2)。Qos=0,表示发布消息方并不关心是否接收到该消息,其只管发送,服务器不会给它一个消息回馈,这种是最不可靠的。Qos=1,表示至少发送一次消息,在这种情况下发送方发送消息后服务器会给发送方一个回馈信息puback,如果发送方在一段时间内没有收到该回馈信息puback那么发布方还会再次发布该信息。Qos=2,表示消息仅仅发送一次,这种等级是最可靠的,这种情况下发送方发布消息后服务器会给一个反馈pubrec,接到反馈信息后发送方还会给服务器发送一个pubrel,然后服务器再次发送反馈pubcomp给发送方,表明完成发送任务。

4、  通配符(wildcard):通配符可以简化我们发布或者订阅消息的方式,包括“/”、“+”、和“#”。“/”用于分隔主题层次或者名称,如“学校、二年级、一班”层次主题为“学校/二年级/一班”。“+”代表任意一个层次或者名称,如,可以用“+”代表任意学校、年级或者班级:“+/二年级/一班”表示任何学校的二年级一班、“某某学校/+/一班”表示某某学校所有年级的一班。“#”用来代表一个层次名称和其子层次名称,如“学校/#”表示学校下面的任意年级的任意班级。通配符代表特定的意义,因此在发布或订阅消息的主题中不能用于主题名称。

5、  遗嘱信息(last will):如果在发布消息的时候设置了lastwill信息(可以设置遗嘱信息的主题、等级、和内容等)那么当且仅当在连接出现异常时候订阅方就可以接收到该遗嘱信息和内容,如果没有出现异常那么订阅方就不能接收到该信息。这种方式可以用来告诉订阅者为什么接收不到消息。

6、  UTF-8:用于处理基于文本的信息交流。在发送或者订阅信息出现乱码时可以使用提供的UTF-8方法。

7、  清空session(clean session):在发布信息时如果设置clean session为false此时需要设置一个客户端id(client_id),那么以前有相同client_id的session会被重新使用;如果设置成true那么发布信息时一个新的session将被启用,以前的有关联的session将被清除掉。该特性测试了,没有看到效果。

保持心跳(keep alive):当没有信息发布或者订阅时候发布方和订阅方任和服务器保持连接(只不过这时候需要消耗很少一部分资源),这个keep alive是用来设置保持连接的时间。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值