玩转MQTT-阿里云之MQTT使用(下)

玩转MQTT-阿里云之MQTT使用(下)php

摘要

       为使物联网项目在正式使用时,能顺利切换到具备高并发高负载能力的服务平台,对阿里云提供的MQTT服务进行使用验证。html

引言

       以前写“MQTT之阿里云使用-玩转阿里云”这篇文章时,因为时间关系(写文章也是要花费大量时间的),打算将内容拆分为两部分,将写好的一部分先发了出去,打算稍后再补充后续完结内容。算法

       不成想,文章发出后,竟然被管理员从首页移除,严重打击了本人本来不那么强悍的心里,致使一直不太有兴趣完成后续部分。编程

      近来翻看本身的文章,发表这篇烂尾的文章竟然是本身文章中阅读访问量最高的一篇。虽然文章内容组织比较凌乱,表述也不够好,在这9102年即将过去之际,仍是打算来一个续篇,为本身忙忙碌碌(碌碌无为)的2019作个收尾。json

MQTT服务验证

       书接上回,咱们说到了阿里云RocketMQ、MQTT服务的开通(MQTT消息的持久化依托MQ服务)、介绍了MQ、MQTT实例的建立,顶级Topic资源的建立,GroupID前缀的建立以及RAM账号资源的建立及账号受权。数组

       一系列准备工做以后,准备开始使用MQTT消息中间件服务。安全

访问鉴权

       使用微消息队列 MQTT 的客户端收发消息时,服务端会根据 MQTT 客户端设置的 Username 和 Password 参数来进行鉴权。服务器

       阿里云支持两种鉴权模式并发

       签名验证:永久受权,适用于客户端安全受信任的场景app

       临时 Token 权限验证:临时受权,适用于客户端不安全的场景

 

       具体鉴权认证的相关资料在这里,你们可自行访问阅读。https://help.aliyun.com/document_detail/54225.html

 

签名校验

      简单介绍一下阿里云MQTT访问中的签名鉴权模式下的访问要点

      一、 MQTT链接参数中ClientId必须以GroupID为前缀,以@@@做为链接符,链接自定义的客户ID

      二、 MQTT链接参数中Username由鉴权模式名称、AccessKey、InstanceId 三部分组成,以 “|” 分隔。

      三、 MQTT链接参数中Password是用AccessKey对应的AccessKeySecret对ClientId使用 HMAC-SHA1 方法进行签名计算获得一个二进制数组,再对该二进制数组作 Base64 编码获得最终的 Password 签名字符串。

 

      签名校验资料网址以下:https://help.aliyun.com/document_detail/48271.html

 

      阿里云MQTT服务管理页面中,提供了一个在线的JS版本的签名校验验证计算页面,用于验证各位自行实现的校验算法是否正确。

 

 

MQTT链接测试

让咱们调出Paho神器,来一场说连就连的测试

https://repo.eclipse.org/content/repositories/paho-releases/org/eclipse/paho/org.eclipse.paho.ui.app/1.0.2/

https://www.eclipse.org/paho/downloads.php

 

 

      如上图,先建立MQTT链接,填入服务器地址及端口,填入客户机标识(ClientId)

 

 

      在MQTT链接选项中,勾选开启登陆,填写用户名、密码

 

 

 

      点击链接,正常状况下,便可成功链接并登陆到阿里云MQTT服务器。

      笔者基于C#,使用开源MQTTnet的Nuget包,也实现了一个简单的MQTT客户端。咱们用这个客户端进行链接测试,效果以下图。

 

消息消费

      MQTT是基于二进制消息的发布/订阅编程模式的消息协议。

      要使用MQTT进行通信,就须要有发布者和消费者。发布者经过发布主题消息传递信息,接收者经过订阅对应的主题接收和消费信息。

订阅主题

 

      MQTT客户端与MQTT服务器创建链接以后,咱们便可以进行消息订阅和消息发布。

发布主题

      咱们使用上文中创建的顶级主题建立一个带有通配符的订阅主题。

      注意,MQTT容许使用通配符订阅主题,可是并不容许使用通配符广播。

 

 

 

       咱们建立一个顶级主题下带有城市和发布者编号的主题,发布一条消息,Payload中携带一个json格式的状态信息和坐标信息。

       点击发布,能够看到上图中,接收框中,成功接收到订阅主题下的消息。(操做中发布了二条消息)。

 

       使用Paho测试消息发布/订阅,效果相同。

 

       一个发布者发布的消息,能够被多个订阅者接收。

       至此,阿里云MQTT服务使用介绍完毕。

 

      <<<玩转MQTT-阿里云之MQTT使用(上)