玩转MQTT-阿里云之MQTT使用

引言
前两年买一款物联网控制板,当时把玩了一阵之后,验证了下串口通讯、MODBUS协议实现、TCP/UDP/DNS/MQTT通讯(基于GPRS)后,就放到角落里吃灰了呵。

最近收到阿里云的优惠推送,说是什么每月百万条次使用免费,于是想起了这套吃灰装备,是不是也高大上一把,体验下支持高可用、高并发的阿里云,玩下阿里云的MQTT服务呢?

说干就干。

阿里云服务

许多人对云服务一知半解,以为知道个ECS/云主机,就是云服务的全部了。其实,云服务有许多内容,消息中间件服务也是其中一种。

本次我们要使用的MQTT消息服务也是消息中间件的一种。

笔者所知道的消息中间件

ActiveMQ

Aopllo

RabbitMQ

Kafka

RocketMQ

消息队列在实际应用中常用的使用场景。异步处理,应用解耦,流量削锋和消息通讯四个场景,具体内容园中相关文章不少,笔者不再此献丑了呵。

本文主要对具体实战应用进行说明。

登录阿里云

首先,我们打开阿里云。

https://www.aliyun.com/

右上角,登录

image

支持多种方式登录

可用阿里系旗下的淘宝、支付宝、钉钉等帐号登录而无需注册呵,真是方便啊

不过当中,还夹了一个微博登录,不知是什么个情况,本人不用这个,不管也罢。

选择淘宝登录
image

消息队列MQ

登录阿里云后,找到管理控制台,在如下位置,找到MQ相关服务

image

阿里云中的产品太多,笔者摸索了半天才找到的呵。

开通RocketMQ服务

选择消息队列MQ

单击消息队列 RocketMQ 进入消息队列 RocketMQ 的产品主页。

在消息队列 RocketMQ 的产品主页上,单击立即开通进入消息队列 RocketMQ 服务开通页面,根据提示完成开通服务。

创建资源

资源类型说明

一个新的应用接入消息队列 RocketMQ 需要先创建相关的消息队列 RocketMQ 资源,包括:

  • 实例:用于消息队列 RocketMQ 服务的虚拟机资源,会存储消息主题(Topic)和客户端 ID(Group ID)信息。
  • 消息主题(Topic):在消息队列 RocketMQ 的消息系统中,消息生产者将消息发送到某个指定的 Topic ,而消息消费者则通过订阅该指定的 Topic 来获取和消费消息。
  • Group ID:用于消息消费者(或生产者)的标识
  • 阿里云 AccessKey:用于收发消息时进行账户鉴权

MQ服务管理界面如下

image

微消息队列MQTT

在阿里云中,MQTT被称为微消息队列,大家入乡为俗吧。

点击 消息队列 RocketMQ ,出现下拉列表
image

哦,原来MQTT服务你躲在这里啊(产品中直接搜索MQTT是找不到的哦)
image

各位同学,看到的界面可能与我有所不同,可能在看到上述界面之间,未开通相关服务的同学,可能会看到一个开通相关服务的界面,点击开通就行了呵。(已开通的话,相关界面是不会再显示的呵)

仅开通服务,不创建相关资源,是不会收费的呵。

创建MQTT实例

创建MQTT实例

image

弹出购买界面

image

我们选择最右侧的按量付费套餐。

购买后,系统自动生成一个MQTT服务实例
image

系统显示我们已成功创建了一个实例

同时,系统给出了第二步的向导:

消息存储配置

阿里云中的MQTT服务没有提供存储功能,需要一个MQ服务来提供支持。

控制台给出的选项中,Kafka和AMQP目前均不可用

只有RocketMQ可选。

好吧,这也算是选择的话(我有得选吗?)

image
我们选择新建共享实例,我们以共享单车应用为例,取一个 bike 的实例名

image

确认,系统生成RocketMQ实例
image

系统完成MQTT实例的配置,并给出了公网接入点地址。

创建Topic

阿里云的MQTT主题订阅要求必需创建一个顶级的主题资源
image

我们选择普通消息,其他的消息类型,大家可自行查看相应的说明。

创建组ID

image

RAM资源访问控制

在服务创建过程中,阿里云系统会提示我们需要配置RAM管理

创建用户

我们创建一个名为bike的用户
image
点击确定,系统提示需要手机验证,我们获取验证码后填入并确定

系统生成用户信息,生成了用户名和密码
image

大家切记,一定要点制复制,将用户信息进行妥善保存,否则,你会发现,前面一顿操作猛如虎,没有AccessKeySecret白瞎杵。

一旦关闭此页面,AccessKeySecret是无法再找回的。

不过,系统中虽然不能查看AccessKeySecret,但是还是允许为用户创建新的AccessKey和AccessKeySecret,万一AccessKeySecret丢失,只有新创建了。

授权

创建用户后,需要对用户进行授权
image

对用户添加权限
image

MQTT服务验证

是不是到这里MQTT服务就可以用了呢?

等等,好象我们还忘了什么?

哦,MQTT访问是需要用户/密码的哦,当然,有些服务器是允许空用户的。不过阿里云的是不允许这样的。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Python中实现MQTT接入阿里云,需要使用Paho MQTT客户端库和阿里云IoT Python SDK。以下是实现的步骤: 1.安装paho-mqtt和aliyun-iot-sdk-core第三方库: ``` pip install paho-mqtt aliyun-iot-sdk-core ``` 2.创建一个MQTT客户端并连接到阿里云IoT: ```python import paho.mqtt.client as mqtt from aliyunsdkcore.client import AcsClient from aliyunsdkiot.request.v20170420 import RegisterDeviceRequest from aliyunsdkiot.request.v20170420 import PubRequest client = mqtt.Client(client_id="your_client_id") client.username_pw_set(username="your_product_key&your_device_name", password="your_device_secret") client.connect("your_product_key.iot-as-mqtt.cn-shanghai.aliyuncs.com", port=1883) ``` 3.注册设备并获取设备的Topic: ```python client = AcsClient("your_access_key_id", "your_access_key_secret", "cn-shanghai") request = RegisterDeviceRequest.RegisterDeviceRequest() request.set_ProductKey("your_product_key") request.set_DeviceName("your_device_name") response = client.do_action_with_exception(request) topic = response["Data"]["Device"]["Topic"] ``` 4.发布和订阅消息: ```python def on_message(client, userdata, msg): print(msg.topic + " " + str(msg.payload)) client.subscribe(topic) client.on_message = on_message request = PubRequest.PubRequest() request.set_ProductKey("your_product_key") request.set_TopicFullName(topic) request.set_MessageContent("hello world") client.publish(topic, payload="hello world", qos=0) ``` 以上是Python实现MQTT接入阿里云的简单示例,需要根据自己的实际情况进行修改。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值