阿里云mqtt授权(mqtt 权限)
华为云服务器特价优惠火热进行中! 2核2G2兆仅需 38 元;4核4G3兆仅需 79 元。购买时间越长越优惠!更多配置及优惠价格请咨询客服。
合作流程: |
今天给各位分享阿里云mqtt授权的知识,其中也会对mqtt 权限进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
微信号:cloud7591如需了解更多,欢迎添加客服微信咨询。
复制微信号
本文目录一览:
- 1、阿里云mqtt收费标准
- 2、MQTT客户端设置
- 3、如何使用 NB-Iot + Arduino 通过MQTT协议上传数据至阿里云平台?
- 4、MQTT 系列之 MQTT broker 的连接
- 5、阿里云消息中间件(MQ)探秘
- 6、在云服务器上搭建了mqtt,为什么手机连接不上mqtt,要怎么做才能连接上?求求大神帮忙
阿里云mqtt收费标准
以下是阿里云mqtt收费标准:
其中铂金版实例、标准版实例、轻量版实例是包年包月(预付费)。是一种预付费模式,即先付费再使用。一般适用于业务量较大且长期运行的场景,通过包年包月付费方式您可以提前预留资源,同时享受更大的价格优化,帮您最大程度节省成本。
还有就是按量付费实例是按量付费(后付费)。即是一种后付费模式,即先使用再付费。一般适用于业务流量波峰波谷差异明显或临时测试的场景,可以有效避免资源浪费。
微消息队列mqtt版费用组成:
按量付费包括:同时在线连接数;消息收发量;订阅关系数
包年包月包括:连接数上限;消息TPS上限;订阅关系数上限
计价倍率介绍:
MQTT协议QoS=0且cleanSession=true 1
MQTT协议QoS=0且cleanSession=false 1
MQTT协议QoS=1且cleanSession=true 2
MQTT协议QoS=1且cleanSession=false 5
MQTT协议QoS=2且cleanSession=true 5

MQTT客户端设置
MQTTBox
从MQTTBox应用程序创建新的MQTT客户端时,您可以指定各种连接设置。大多数设置默认设置为最常用的值,但是您可能仍需要自定义设置以根据需要测试MQTT客户端。本文档详细解释了每个客户端设置属性,以便更好地理解客户端连接和实际的MQTT协议。
MQTT客户端名称: 用于标识MQTT客户端并在仪表板上显示的名称。它可以是任何字符串值。
例如:client_test_1
客户端ID: 客户端标识符是连接到MQTT代理的每个MQTT客户端的标识符。对于给定的经纪人,每个客户应该是唯一的。代理使用它来识别客户端和客户端的当前状态。它默认是自动生成的。如果尝试连接具有相同客户端标识符的两个MQTT客户端,则代理将拒绝连接。当您打开2个MQTTBox应用程序实例时,请确保您拥有唯一的客户端ID,否则您的客户将被代理拒绝并可能显示为脱机。
例如:client_id_1
将时间戳附加到MQTT客户端ID?: 如果选中,则时间戳将附加到客户端ID。默认情况下启用此选项。很多时候,用户在相同或不同的机器上打开多个MQTTBox应用程序实例,这些机器具有相同的MQTT客户端设置,包括不同的客户端ID。这会导致客户端连接由于相同的客户端ID而被代理拒绝。如果启用此选项,MQTTBox会将时间戳附加到每个客户端ID,使其几乎唯一,这有助于您节省调试不必要问题的时间。
Broker是否符合MQTT v3.1.1 ?: 如果要连接的MQTT代理仅支持旧版本的MQTT协议3.1或更低版本(v3.1.1是最新版本和当前标准版),则应取消选中此选项。默认情况下,它会被检查并假定MQTT代理符合当前的MQTT标准v3.1.1(或更高版本)。
协议: MQTT客户端用于连接MQTT代理的网络协议。
MQTTBox支持TCP,SSL / TLS,MQTT,MQTTS,WebSockets(WS)和Secure WebSockets(WSS)。根据您使用MQTTBox应用程序的平台,由于平台限制,可能不支持所有协议。
请 在此处 查看每个平台支持的MQTTBox功能列表。
主机: 要连接的MQTT主机。确保根据所选的MQTT连接协议指定正确的主机和端口号。如果您提到错误的端口号或交换端口号,MQTT客户端可能无法连接。
例如:test.mosquitto.org:8080
Clean Session? :clean session标志指示代理是否客户端想要建立持久会话。如果您需要持久会话,即代理将存储客户端的所有订阅以及所有丢失的消息,则在订阅服务质量(QoS)1或2时,取消选中/不选择此选项。默认情况下会选中此选项或是,这意味着代理将启动新会话,不会为客户端存储任何内容,也会清除先前持久会话中的所有信息。
在应用程序启动时自动连接?: 如果您选中/是此选项,客户端将尝试在启动MQTTBox应用程序时自动连接到代理,并且可以处于“已连接”或“连接错误”状态,具体取决于客户端是否已连接到代理或不。如果未选中/没有此选项,客户端将处于“未连接”状态,您需要手动将客户端连接到代理。
您可以从MQTTBox仪表板连接,断开连接,重新连接MQTT客户端
用户名: 经纪人所需的用户名(如果有)。MQTT允许发送用于验证和授权客户端的用户名。
密码: 经纪人要求的密码(如果有)。MQTT允许发送密码以进行客户端的身份验证和授权。 请注意,所有密码都以纯文本格式保存。确保您永远不会在MQTTBox应用程序中保存生产密码。事实上,所有字段都保存为纯文本,请确保您永远不会在MQTTBox应用程序中保存任何敏感信息/设置 。
重新安排Ping? 如果选中/是,则在发送数据包后重新安排ping消息。
队列传出QoS零消息: 如果选中/是,如果客户端和代理之间的连接断开,则客户端队列的传出QoS零消息。建立连接后,将发布所有这些消息。
重新连接周期(以毫秒为单位): 两次重新连接之间的间隔
连接超时(以毫秒为单位): 收到CONNACK之前等待的时间
KeepAlive(以秒为单位): keep alive是一个时间间隔,客户端通过向代理发送常规PING请求消息来提交。具有PING响应和这种机制的代理响应将允许双方确定另一方是否仍然存活且可达。默认设置为10秒,设置为0表示禁用。
Will Settings - will消息是MQTT Client最后遗嘱的一部分。当客户端断开连接时,它允许通知其他客户端。连接客户端将在CONNECT消息中以MQTT消息和主题的形式提供其意愿。如果此客户端无法正常断开连接,则代理会自动代表客户端发送此消息。
将设置 - 主题: 要发布的主题将是有效负载。一个简单的字符串,可以使用正斜杠作为分隔符进行分层结构化。
例如:topic_test_1或家庭/厨房/湿度
将设置 - QoS: 发布具有QoS集的有效负载。默认情况下为0。
将设置 - 保留: 保留will有效载荷的标志。
将设置 - 有效负载: 客户端断开连接时要发布的消息。
要发布 的主题 : 是要发布到的主题。一个简单的字符串,可以使用正斜杠作为分隔符进行分层结构化。
例如:topic_test_1或家庭/厨房/湿度
QoS: 此消息的服务质量等级(QoS)。级别(0,1或2)确定传递的消息的保证。
保留: 此标志确定代理是否将消息作为上一个已知的良好值保存到指定主题。订阅该主题的新客户将在订阅后立即收到有关该主题的最后保留消息。
要删除主题的保留消息,请发送包含该主题的零字节负载的保留消息。
有效负载: 这是要发布到主题的消息的实际内容。
主题: 是要订阅的String主题。您可以为主题指定单级(+)和多级(#)订阅。
例如:topic_test_1或家庭/ + /湿度或家庭/#
QoS: 此消息的服务质量等级(QoS)。级别(0,1或2)确定传递的消息的保证。
如何使用 NB-Iot + Arduino 通过MQTT协议上传数据至阿里云平台?
有很多通信模块只有TCP功能,没有MQTT功能,比如WIFI,W5500等模块,还有一些NBIOT模块,但是又想连接阿里云物联网平台,官方提供了操作系统,需要自己移植,很麻烦,比较难看得懂。就在想有没有一些简单一定的方法。
心想MQTT是基于TCP的,能否使用TCP转MQTT?因此就想使用TCP协议然后转MQTT协议连接阿里云物联网平台,经过试验证明是可以的。
首先我们先分析一下如何登陆接入Onenet平台。
先从它数据格式开始分析。首先我们要从后台取出三个信息,我们以这个为例。
我们把产品ID,设备名称,设备秘钥,简称三要素 (具体是什么看你自己的设备)
其实阿里云物联网平台的MQTT协议用的就是标准的,不过它加入了自己的认证方式。
MQTT协议需要上传四个参数,报活时间,clientID,用户名,密码。
那么阿里云的就在clientID,用户名,密码做了手脚。
clientID比较长,按照一定的格式
用户名:设备名和秘钥组成
密码:使用了加密串进行了加密,有sha1或者MD5加密方式
下面我们来介绍一下
MQTT接入都是发十六进制的数据。
么我们发送的时候就是这样子的一串数据
0x74 0x00 0x04 0x4d 0x51 0x54 0x54 0x04 0xC0 0078 0033 0x61 0x62 0x63 0x7c 0x73 0x65 0x63 0x75 0x72 0x65 0x6d 0x6f 0x64 0x65 0x3d 0x33 0x2c 0x73 0x69 0x67
0x6e 0x6d 0x65 0x74 0x68 0x6f 0x64 0x3d 0x68 0x6d 0x61 0x63 0x73 0x68 0x61 0x31 0x2c 0x74 0x69 0x6d 0x65 0x73 0x74 0x61 0x6d 0x70 0x3d 0x31 0x32 0x30 0x7c 0009
0x35 0x36 0x37 0x38 0x26 0x31 0x32 0x33 0x34 0028 0x32 0x32 0x32 0x37 0x35 0x30 0x44 0x45 0x44 0x46 0x45 0x34 0x46 0x37 0x37 0x34 0x30 0x30 0x32 0x45 0x45 0x38 0x37 0x45 0x45 0x44 0x32 0x39 0x43 0x46 0x44 0x30 0x36 0x33 0x38 0x43 0x35 0x46 0x36 0x36
十六进制解释
数据长度:0x74
协议数据长度 0x00 0x04
协议类型: 0x4d 0x51 0x54 0x54
协议数据: 0x04 0xC0
keepAlive数据:0078
ClientID长度:0033
ClientID: 0x61 0x62 0x63 0x7c 0x73 0x65 0x63 0x75 0x72 0x65 0x6d 0x6f 0x64 0x65 0x3d 0x33 0x2c 0x73 0x69 0x67 0x6e 0x6d 0x65 0x74 0x68 0x6f 0x64 0x3d 0x68 0x6d 0x61 0x63 0x73 0x68 0x61 0x31 0x2c 0x74 0x69 0x6d 0x65 0x73 0x74 0x61 0x6d 0x70 0x3d 0x31 0x32 0x30 0x7c
用户名:0009
用户名: 0x35 0x36 0x37 0x38 0x26 0x31 0x32 0x33 0x34
密码长度:0028
密码: 0x32 0x32 0x32 0x37 0x35 0x30 0x44 0x45 0x44 0x46 0x45 0x34 0x46 0x37 0x37 0x34 0x30 0x30 0x32 0x45 0x45 0x38 0x37 0x45 0x45 0x44 0x32 0x39 0x43 0x46 0x44 0x30 0x36 0x33 0x38 0x43 0x35 0x46 0x36 0x36复制代码上面的就是连接服务器的连接包
下面呢,我们来做个发布包(上传数据到服务器)
0x30 0x1D 0009 2f7379732f706f7374 0x7b 0x70 0x61 0x72 0x61 0x6d 0x73 0x3a 0x7b 0x74 0x65 0x6d 0x70 0x3a 0x31 0x30 0x7d 0x7d
十六进制数据解释
数据头:0x30
数据长度:0x1D
TopicName数据长度:0009
TopicName数据内容:2f7379732f706f7374
主体json数据: 0x7b 0x70 0x61 0x72 0x61 0x6d 0x73 0x3a 0x7b 0x74 0x65 0x6d 0x70 0x3a 0x31 0x30 0x7d 0x7d复制代码以上就是连接阿里云的数据包格式及发布数据的格式,由于时间问题没有做订阅的数据包分析,下一次更新订阅的内容。
MQTT 系列之 MQTT broker 的连接
client 在可以发布和订阅消息之前,必须先连接到 broker,下面我们来看一下连接到 broker 的流程。
连接的建立由 Client 端发起,Client 端首先向 broker 发送一个 CONNECT 数据包,CONNECT 数据包包含以下内容(这里我们略过 fixed header)。
在 CONNECT 数据包可变头中,含有以下信息。
协议名称(Protocol name) :值固定为 MQTT 字符。
协议版本 :对于 MQTT3.1.1 来说,值为 4.
用户名标识 :消息体中是否有用户名字段, 1bit , 0 或 1。
密码标识 :消息体中是否有密码字段,1bit,0 或 1。
遗愿消息 Retain 标志(will retain) :标识遗愿消息是否是 retain 消息,1 bit,0 或 1。
遗愿消息 QoS 标志 (will QoS) :标志遗愿消息的 QoS 是否存在,1 bit,0 或 1。
会话清除标志(clean session) :标识 Client 是否建立一个持久化的会话,1bit,0或1,当 clean session 的标识为 0 时,代表 client 希望建立一个之久的会话连接,broker 间存储该 client 订阅的主题和未接受的消息,否则broker不会存储这些数据,同时在建立连接时清除这个 client 之前的持久化会话保存的数据。
心跳保持(keep alive) :设置一个单位为秒的时间间隔,client 和 broker 之间在这个时间内至少需要进行一次消息交互,否则 client 和 broker 会认为它们之间的连接已断开。
CONNECT 数据包的消息体中包含了以下数据。
客户端标识符(client identifier) :Client Identifier 是用来标识 Client 身份的字段,在 MQTT3.1.1 的版本中,这个字段的长度是 1 到 23个字节,而且只能包含数字和26个字母(包括大小写),broker 通过这个字段来区分不同的 client。所有在连接的时候,client应该保证它的 identifier 是唯一的,通常我们可以使用比如 UUID,唯一的设备硬件标识,或者 Android 设备的 DEVICE_ID 等作为 Client identifier 的取值来源。MQTT 协议中要求 Client 连接时必须带上 Client Identifier,但是也允许 broker 在实现时 Client Identifier 为空,这时 Broker 会为 Client 分配一个内部唯一的 Identifier。如果你需要使用持久化会话,那就必须自己为 Client 设定一个唯一的 Identifier。
用户名(Username) :如果可变头中的用户标识设为 1,那么消息体中将包含用户名字段,Broker 可以使用用户名和密码来对接入的 Client 进行验证,只允许已经授权的 Client 接入。注意不同的 Client 需要使用不同的 Client Identifier,但它们可以使用同样的用户名和密码进行连接。
密码(password) :如果可变头中的密码标识为1,那么消息体中将包含密码字段。
遗愿主题(will topic) :如果可变头中遗愿标识设为1,那么消息体中将包遗愿主题,当 Client 非正常地中断连接的时候,Broker将向指定的遗愿主题中发布遗愿消息。
遗愿消息(will message) :如果可变头中的遗愿标志为1,那么消息体中将包含遗愿消息,当 Client 非正常地中断连接的时候,Broker 将向指定的遗愿主题中发布由该字段指定的内容。
当 broker 收到 client 的 CONNECT 数据包之后,将检查并校验 CONNECT 数据包的内容,之后回复 Client 一个 CONNACK 数据包。
CONNACK 数据包包含以下内容(这里略过 Fixed header)。
CONNACK 数据包的可变头中,含有如下信息:
会话存在标识(Session Present Flag) :用于标识在 Broker 上,是否存在该 client(用 client identifier 区分)的持久性会话,1bit,0或1。当 Client 在连接时设置 clean session = 1 ,则 CONNACK 中的 Session Present Flag 始终为 0;当 client 在连接时设置 clean session = 0 时,那么分为两种情况:如果 broker 上面保存了这个 Client 之前留下的持久性会话,那么 CONNACK 中的 session present flag 值为 1,如果 broker 没有保存该 client 的任何会话数据,那么 CONNACK 中 session present flag 值为 0.
连接返回码: 用于标识 client 是否连接建立成功,连接返回码如下:
在这里强调一下 code 4 和 5。Return Code 4 在 MQTT 协议中的含义是 Username 和 Password 的格式不正确,但是在大部分的 Broker 实现中,在使用错误的用户名密码时,得到的返回码也是 4。所以这里我们认为 4 就是代表错误的用户名或密码。Return Code 5 一般在 Broker 不使用用户名和密码而使用 IP 地址或者 Client Identifier 进行验证的时候使用,来标识 Client 没有通过验证。
CONNACK 没有 payload。
Client 主动关闭连接的流程很简单,只需要向 broker 发送一个 DISCONNECT 数据包就可以了。DISCONNECT 数据包没有可变头和消息体。在 Client 发送完 DISCONNECT 后,无需等待 broker 的回复(broker 也不会有回复),直接关闭底层的 tcp 连接即可。
MQTT 协议规定 Broker 在没有收到 Client 的 DISCONNECT 数据包之前都应该保持和 Client 连接,只有 Broker 在 Keep Alive 的时间间隔里,没有收到 Client 的任何 MQTT 数据包的时候会主动关闭连接。一些 Broker 的实现在 MQTT 协议上做了一些拓展,支持 Client 的连接管理,可以主动地断开和某个 Client 的连接。
Broker 主动关闭连接之前不会向 Client 发送任何 MQTT 数据包,直接关闭底层的 TCP 连接就完事了。
阿里云消息中间件(MQ)探秘
阅读字数: 2513 | 5分钟阅读
获取嘉宾演讲视频及PPT ,请点击:
阿里巴巴中间技术专家不铭从功能特性、技术架构、最佳实践、案例分析四个方面进行了《Aliware-MQ消息队列》的分享。
Aliware-MQ是阿里云提供的企业级互联网架构的核心产品,基于高可用分布式集群技术,支持海量高并发和万亿级消息流转,支持海量的消息堆积,支持高可靠/高可用方案,提供了运维、监控等一系列完整的配套服务。
如上图所示,从消息的维度来看分为普通消息、顺序消息、定时消息和事务消息等四种消息,无论是发送哪种消息客户端都支持熔断机制,即如果发现发送目标节点有性能问题,客户端会自动进行熔断,把有问题的节点排出去,保证消息发往可靠性最高的机器。管理方面已经支持消息的查询、消息回溯、消息全链路轨迹和监控报警机制。性能上MQ已经达到了百亿级的堆积能力,毫秒级的投递延迟,支持万级节点高并发,集群水平热扩缩。消息消费方面,支持失败后的消息重投机制,失败的消息会重新投递到队列中去,现在最多支持16次重投。
上图是Aliware-MQ的功能架构。左边是控制台的管理,可以在上面做发布订阅管理。右边目前的接入方式是SDK支持TCP协议,同时也支持HTTP接口,以及面向手机终端的MQTT协议。
OpenAPI是MQ提供给用户的管控方式,用于实现一系列资源管理和运维功能,用户可以通过Open API查询所需要的任何东西。
上图中是我们今年推出的一个MQ移动物联网套件。之前的客户端,不管是上游还是下游收发都是用各自的服务器。但是今年我们有了移动物联网套件,可以直接面向终端设备。比如手机、汽车等移动设备利用移动物联网套件,通过一个网关就可以直接和消息系统打通。
Aliware-MQ的消息系统是基于队列。队列要保证数据安全,是支持高并发和高性能读写的最基本元素。
如上图所示,Producer是消息发送集群,下游的Consumer是消费者集群,都依赖于MQ的SDK。Broker是消息服务器,所有的消息都发送到Broker上面;Name Server和ZK功能类似,用来做服务发现。Producer要从Name Server获取到Topic在哪个节点上,订阅Topic时需要知道Topic从哪里取,同样需要Name Server。Broker上的Topic信息会定时在Name Server上注册,Producer和Consumer在交互之前会从Name Server上获取目标。
图中的master是主机,slave是备机,主备之间会做数据同步,有异步和同步两种方式。一个master可以布多个节点,这个根据自己的成本来决定。如果扩容的话,只要直接布一台master即可,它会定时地将Topic注册到Name Server上,发送方和订阅方也会定时地感知这个过程,整个扩容的过程对于用户来说大概30秒就能完成。
Aliware-MQ所有数据存储在Commit Log里,它在实现上就相当于一个文件夹,每次会生成一个1G的文件。不管哪个Topic写过来的消息都会直接写入这个文件中,这个文件写满后再直接写下一个。
针对每一个Topic,要在业务层面对它进行区分,所以我们做了一层索引。例如在上图中有5个队列,每个队列都会生成定长的索引文件,通过索引,可以找到这条消息当前处于哪个CommitLog文件的某个具体位置中。
这样存储结构,保证了无论多少个topic,CommitLog的写是顺序的,能较大的保证MQ的写入性能。
Aliware-MQ的负载均衡是按照队列维度来做的,消费的时候会把topic的队列平均分配给消费实例。比如有2个消费实例,topic队列是4个,那么每个消费实例就消费2个;而如果共有5个队列,那么就是是1个消费2个,另1个消费3个。一个队列同一时间只会被一个消费实例消费,所以当出现队列数量小于消费实例数量的情况时,就会有消费实例出现空闲,这个时候可以根据业务实际情况手动通过工具将队列数量调大。
消息写进来都是先放在Java堆里,然后再落盘。如果用户要消费的消息都在内存里,那么就可以很快的读取到。但是如果用户消息堆积比较久,消息已经不在内存里而是存储在了磁盘中,这个时候就需要去磁盘里取数据,然后加载到内存里面读取出来。
Aliware-MQ的刷盘策略有异步和同步两种。异步到内存就返回成功,同步写则一定是消息刷到磁盘中才会返回成功。这种刷盘方式可以根据业务的具体需求进行配置,从写入的性能来看,异步写的性能肯定是会比同步的好。
从发消息的角度来看,如果发送失败,会有补偿机制。MQ的客户端会做三次重发,一台机器发送失败之后会默认往另外两台机器再尝试,如果三次都失败了才会把最终的失败结果传回,这个时候用户需要自己对发送异常进行相关处理。
有幂等要求的业务,Consumer在使用的时候需要自己做去重操作,在一些场景下,如客户端本地等待超时等,是无法保证消息完全不重复的,因此用户在进行系统设计时需要考虑到这一点。
Aliware-MQ目前支持的消息最大是4M,消息越小,性能越高。定时消息是支持消息的定时投递,可以自行设置要投递的时间,最长是40天。事务消息通过两阶段的提交的方式,来解决分布式事务问题。顺序消息可以采用全局顺序、分区顺序,严格保证消息的顺序。
Aliware-MQ的使用场景主要有系统间异步解耦、分布式事务、异构数据复制与分发、双十一大促的削峰填谷、大规模机器的Cache同步、日志服务和IM实时通信以及实时计算分析。
MQ顺序消息分为全局有序和队列有序。全局有序是从指所有消息发出开始,下游的接收方都是按照顺序接收;队列有序则是将消息进行区块分区,同一个分区内的消息按照先入先出的顺序进行顺序消费,保证一个队列只会被一个进程消费。
当一个交易系统下单之后,会发一条消息到MQ,购物车接收消息把购物车里的状态清空。如果这时交易消息发送失败,购物车就无法清空,对于数据来说这就是一个脏数据。面对这种情况我们有事务消息可以解决这个问题,在交易开始时先发送一条半事务消息,然后交易系统开始下单,所有事情做完之后再提交半事务,这时只有主动提交成功,消息队列才会将这条消息实际发送给用户。如果交易下单过程失败,则可以主动回滚这条消息,购物车和交易系统之间可以做到没有脏数据。
双十一大促时,各个分会场会有玲琅满目的商品,每件商品的价格都会实时变化。使用缓存技术也无法满足对商品价格的访问需求,缓存服务器网卡跑满。访问较多次商品价格查询影响会场页面的打开速度。于是MQ提供了一种广播机制,本来一条消息只会被集群的一台机器消费。如果使用广播模式,那么这条消息会被集群下的所有节点消费一次,相当于把价格信息同步到需要的每台机器上,可以取代缓存的作用。
实时计算功能主要是做一个消息总线,业务系统自动采集数据,把消息分发达下游的实时计算系统里,根据实时计算结果来给业务方做服务。
我今天的分享就到这里,谢谢大家!
在云服务器上搭建了mqtt,为什么手机连接不上mqtt,要怎么做才能连接上?求求大神帮忙
MQTT协议是广泛应用的物联网协议,使用测试MQTT协议需要MQTT的代理。有两种方法使用MQTT服务,一是租用现成的MQTT服务器,如阿里云,百度云,华为云等公用的云平台提供的MQTT服务,使用公用的MQTT服务器的好处是省事,但如果仅仅用于测试学习还需要注册帐号,灵活性差些,有的平台还需要付费。另一方法是自己使用开源的MQTT组件来搭建。
MQTT服务器非常多,如apache的ActiveMQ,emtqqd,HiveMQ,Emitter,Mosquitto,Moquette等等。
这里介绍的是用轻量级的mosquitto开源项目来搭建一个属于自己的MQTT服务器。
第一步:需要安装一台linux主机,这不多介绍,可以使用真机安装也可以使用虚拟机安装。如果仅仅是自己测试使用都可以。
第二步:下载mosquitto需要的依赖
sudo apt-get install libssl-devsudo apt-get install uuid-devsudo apt-get install cmake
第三步:下载mosquitto并解压,现在mosquitto官网最新的版本是1.5.1
tar xzvf mosquitto-1.5.1.tar.gz
第四步:编译
cd mosquitto-1.5.1/
make
make install
第五步:启动mosquitto
./mosquitto -v
1535473957: mosquitto version 1.5.1 starting
1535473957: Using default config.
1535473957: Opening ipv4 listen socket on port 1883.
1535473957: Opening ipv6 listen socket on port 1883.
这时候mosquitto就会以默认的参数启动。如果需要带配置文件可以修改配置文件mosquitto.conf,
启动时候加上参数 -c,
./mosquitto -c mosquitto.conf
可以看到,mosquitto监听的端口为1883.
这时候我们的MQTT服务器就搭建好了。可找一个mqtt客户端来测试一下。
先发布一个主题“home/garden/fountain/2”
内容是“hello world”
这时候在mosquitto会打印出下面的log
535474247: New connection from 192.168.1.105 on port 1883.
1535474247: New client connected from 192.168.1.105 as MQTT_FX_Client (c1, k60).
1535474247: No will message specified.
1535474247: Sending CONNACK to MQTT_FX_Client (0, 0)
1535474307: Received PINGREQ from MQTT_FX_Client
1535474307: Sending PINGRESP to MQTT_FX_Client
1535474339: Received PUBLISH from MQTT_FX_Client (d0, q0, r0, m0, 'home/garden/fountain/2', ... (12 bytes))
1535474367: Received PINGREQ from MQTT_FX_Client
1535474367: Sending PINGRESP to MQTT_FX_Client
订阅主题“home/garden/fountain/2”
可以看到收到了自己发布的消息。
用wireshark抓包
可以看到抓到了一个MQTT的publish的报文。
阿里云mqtt授权的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于mqtt 权限、阿里云mqtt授权的信息别忘了在本站进行查找喔。
推荐阅读
-
四川路桥(600039.SH)获准发行不超30亿元公司债券
四川路桥(600039.SH)公告,2023年6月6日,公司收到中国证券监督管理委员会下发的《中国证监会关于四川路桥建设集团股份有...
-
受益产品涨价 金宝汤Q3利润超预期
美东时间6月7日美股盘前,金宝汤(CPB.US)公布了2023财年第三季度业绩。受益于多轮涨价,该公司Q3利润超出了华尔街预期。财...
-
正式分家!周鸿祎与前妻离婚股份过户完成,最新市值68亿元
在签订离婚协议两个多月后,三六零实际控制人周鸿祎与前妻胡欢完成了股份转让,正式“分家”。 6月6日晚,三六零(601360...
-
阿根廷男足北京行首轮门票售罄!梅西效应疯狂:有酒店房价飙至11万/晚
阿根廷男足北京行首轮门票售罄!梅西效应疯狂:有酒店房价飙至11万/晚 林心林 来源:时代财经 自去年在卡塔尔捧得...
-
我市整治虚假 违法广告联席会召开
拉萨融媒讯(记者赵耀铁)为进一步加强我市广告市场监管力度,持续规范广告市场秩序,近日,拉萨市整治虚假违法广告联席会议办公室...
-
西部证券-TCL中环-002129-跟踪点评报告:看好六月中旬开工率提升,海外建厂或引动产业链出海潮-230606
硅片库存有望见底,看好六月中旬开工率回升。根据infolink数据,当前硅片厂家皆以去库存化为首要目标,除了硅片价格持续下降外...
-
杉杉品牌预期将于8月4日或之前派发末期股息每股0.04元
杉杉品牌(01749)发布公告,建议派发截至2022年12月31日止年度末期股息每股人民币0.04元(税前)的决议案已获正式...
-
欧盟敦促大型科技公司提醒用户人工智能存在的“阴暗面”
欧盟希望科技公司提醒用户,人工智能(AI)生成的内容有可能导致虚假信息。 虽然新的AI技术“可以充当正面力量”,但是也存在...
-
苹果为演示MR头显搭了一个“大型建筑”?终于有人拍清楚了
财联社 北京时间周二凌晨,苹果将在加州总部举行WWDC23。考虑到库克有望在这次会议上拿出被称为“RealityPro”...
-
所罗门环球控股(08133.HK)拟"10合1"并股后按"2供1"进行供股
来源:格隆汇格隆汇6月5日丨所罗门环球控股(08133.HK)公告,董事会建议按将公司股本中每十(10)股每股面值0.08港元的...
