开发者如何使用云消息队列 MQTT 版

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
性能测试 PTS,5000VUM额度
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
简介: 【10月更文挑战第14天】开发者如何使用云消息队列 MQTT 版

使用阿里云消息队列 MQTT 版(以下简称 MQTT 版)可以帮助开发者构建基于 MQTT 协议的物联网(IoT)应用。MQTT 是一种轻量级的发布/订阅消息传输协议,适用于物联网设备之间的低开销、低带宽通信。

以下是如何在阿里云上配置和使用 MQTT 版消息队列的详细步骤,并附带示例代码。

前提条件

  1. 阿里云账号:确保你有一个有效的阿里云账号。
  2. 阿里云 MQTT 版实例:在阿里云控制台创建一个 MQTT 版实例。
  3. 客户端 SDK:选择一个支持 MQTT 的客户端库,如 Paho MQTT(Java、Python、JavaScript等)、Eclipse Mosquitto(C/C++)等。

步骤一:创建阿里云 MQTT 版实例

  1. 登录阿里云首页。
  2. 在“产品与服务”中选择“云消息队列 MQTT 版”。

image.png

  1. 点击管理控制台,进入控制台。

image.png

如果你是首次使用,需要先开通服务,点击免费开通即可。

image.png

  1. 点击“创建实例”,填写实例名称和其他必要信息。

image.png

  1. 创建完成后,进入实例详情页,获取实例的连接地址端口等信息。

步骤二:创建 Group 和 Topic

  1. 在实例详情页,点击“Group 管理”创建一个 Group。
  2. 在 Group 详情页,点击“Topic 管理”创建一个 Topic。

步骤三:获取访问密钥

  1. 登录阿里云 RAM 管理控制台。
  2. 创建一个 RAM 用户,并分配权限(如 AliyunMQTTFullAccess)。
  3. 获取该用户的 AccessKey ID 和 AccessKey Secret。

步骤四:编写客户端代码

以下是一个使用 Paho MQTT Python 客户端库连接到阿里云 MQTT 版实例并发布/订阅消息的示例代码。

安装 Paho MQTT

bash复制代码
pip install paho-mqtt

示例代码

python复制代码
import paho.mqtt.client as mqtt  
import hashlib  
import hmac  
import base64  
import time  
# 阿里云 MQTT 版实例信息  
ALIYUN_MQTT_ENDPOINT = "your-mqtt-endpoint"  # 替换为你的实例连接地址  
PORT = 1883  # 默认端口  
CLIENT_ID = "your-client-id"  # 客户端ID,可以自定义  
TOPIC = "/your/topic"  # 替换为你创建的 Topic  
GROUP_ID = "your-group-id"  # 替换为你创建的 Group ID  
# 阿里云 AccessKey 信息  
ACCESS_KEY_ID = "your-access-key-id"  # 替换为你的 AccessKey ID  
ACCESS_KEY_SECRET = "your-access-key-secret"  # 替换为你的 AccessKey Secret  
# 生成签名  
def generate_signature(client_id, timestamp, access_key_secret):  
    string_to_sign = '{}\n{}'.format(client_id, timestamp)  
    secret_enc = access_key_secret.encode('utf-8')  
    hmac_code = hmac.new(secret_enc, string_to_sign.encode('utf-8'), hashlib.sha256).digest()  
return base64.b64encode(hmac_code).decode('utf-8')  
# MQTT 回调函数  
def on_connect(client, userdata, flags, rc):  
print("Connected with result code " + str(rc))  
# 连接成功后订阅 Topic  
    client.subscribe(TOPIC)  
def on_message(client, userdata, msg):  
print("Received message: " + str(msg.payload.decode("utf-8")))  
# 创建 MQTT 客户端  
client = mqtt.Client(CLIENT_ID)  
client.on_connect = on_connect  
client.on_message = on_message  
# 设置用户名和密码  
timestamp = str(int(time.time()))  
sign = generate_signature(CLIENT_ID, timestamp, ACCESS_KEY_SECRET)  
username = ACCESS_KEY_ID + "%" + GROUP_ID  
password = sign + "%" + timestamp  
client.username_pw_set(username, password)  
# 连接到 MQTT 服务器  
client.connect(ALIYUN_MQTT_ENDPOINT, PORT, 60)  
# 发布消息  
def publish_message(topic, message):  
    client.publish(topic, message)  
print("Message published")  
# 开始 MQTT 客户端循环  
client.loop_start()  
# 发布示例消息  
publish_message(TOPIC, "Hello, MQTT!")  
# 等待一段时间以接收消息  
time.sleep(10)  
# 停止 MQTT 客户端循环  
client.loop_stop()  
# 断开连接  
client.disconnect()

解释

  1. 生成签名:阿里云 MQTT 版需要基于 AccessKey Secret 和客户端 ID 等信息生成签名,用于认证。
  2. MQTT 客户端:使用 Paho MQTT 库创建客户端,设置回调函数,并连接到阿里云 MQTT 版实例。
  3. 发布/订阅消息:客户端连接到 MQTT 服务器后,可以发布消息到指定的 Topic,并订阅该 Topic 以接收消息。

除了使用python来实现收发消息外,还可以使用其他语言,比如Java,C#等,刚兴趣的小伙伴可以前往官网文档进行查看。

注意事项

  • 安全性:不要将 AccessKey ID 和 AccessKey Secret 硬编码在代码中,应使用环境变量或配置文件管理。
  • 连接管理:在生产环境中,应实现更健壮的连接管理和重连机制。
  • 网络配置:确保客户端能够访问阿里云 MQTT 版实例的连接地址和端口。

通过上述步骤,你可以成功配置并使用阿里云消息队列 MQTT 版进行物联网应用的开发。

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
22天前
|
消息中间件 JSON Java
开发者如何使用轻量消息队列MNS
【10月更文挑战第19天】开发者如何使用轻量消息队列MNS
63 5
|
29天前
|
消息中间件 Serverless 数据安全/隐私保护
开发者如何使用云消息队列 RabbitMQ 版
【10月更文挑战第13天】开发者如何使用云消息队列 RabbitMQ 版
69 6
|
27天前
|
消息中间件 Java Kafka
开发者如何使用云消息队列 Kafka 版
【10月更文挑战第15天】开发者如何使用云消息队列 Kafka 版
62 5
|
29天前
|
消息中间件 监控 Java
开发者如何使用云消息队列 RocketMQ 版
【10月更文挑战第12天】开发者如何使用云消息队列 RocketMQ 版
56 5
|
消息中间件 存储 Cloud Native
云原生开源开发者沙龙「微服务X消息队列专场」
云原生开源开发者沙龙「微服务X消息队列专场」
|
6月前
|
消息中间件 PHP 开发工具
阿里云OpenAPI RocketMQ 5.0的PHP收发消息文档可以在阿里云开发者门户中找到
【1月更文挑战第22天】【1月更文挑战第108篇】阿里云OpenAPI RocketMQ 5.0的PHP收发消息文档可以在阿里云开发者门户中找到
124 6
|
消息中间件 数据安全/隐私保护 RocketMQ
《开发者评测》之RocketMQ从入门到精通获奖名单
RocketMQ从入门到精通活动获奖名单正式公布!
113 0
|
消息中间件 RocketMQ 开发者
《开发者评测》之RocketMQ六大场景评测获奖名单
RocketMQ六大场景评测活动获奖名单出炉啦!
462 1
《开发者评测》之RocketMQ六大场景评测获奖名单
|
消息中间件 Cloud Native 开发者
云原生开源开发者沙龙「微服务X消息队列专场」
「8月27日深圳」云原生开源开发者沙龙微服务X消息队列专场
782 1
云原生开源开发者沙龙「微服务X消息队列专场」
|
消息中间件 Cloud Native 开发者
关于云原生开源开发者沙龙「微服务X消息队列专场」的延期通知
关于云原生开源开发者沙龙「微服务X消息队列专场」的延期通知

相关产品

  • 云消息队列 MQ