基于 Pulsar 获取消息推送(Python SDK)

更新时间:2025-01-23 08:32:09下载pdf

云项目中提供消息订阅功能,当项目中的设备相关状态发生变化时(如设备注册、设备数据上报、设备离线等),开放消息平台通过 Pulsar 主动推送各种事件数据给外部合作伙伴,以满足合作伙伴对消息实时性和消息持久化的要求。

前提条件

操作实践

目前涂鸦基于开源的 Pulsar 系统进行了定制改进,并提供 Python 版本 Pulsar SDK
本文通过使用 Python 开发工具 PyCharm 进行消息接收实践。

第一步:克隆 Github 源码导入工程

Github clone:PyCharm

基于 Pulsar 获取消息推送(Python SDK)

第二步:配置项目参数

修改示例代码 consumer_example.py 中的配置信息:

  • ACCESS_ID:填写云开发平台中 API 授权密钥的 Access ID/Client ID。
  • ACCESS_KEY:填写云开发平台中 API 授权密钥的 Access Secret/Client Secret。
  • PULSAR_SERVER_URL:根据开通消息订阅的数据中心进行选择。
    • 中国数据中心:pulsar+ssl://mqe.tuyacn.com:7285/
    • 美西数据中心:pulsar+ssl://mqe.tuyaus.com:7285/
    • 中欧数据中心:pulsar+ssl://mqe.tuyaeu.com:7285/
    • 印度数据中心:pulsar+ssl://mqe.tuyain.com:7285/
  • MQ_ENV:消息订阅通道
    • MQ_ENV_PROD:正式环境
    • MQ_ENV_TEST:测试环境

基于 Pulsar 获取消息推送(Python SDK)

第三步:App 端操作设备,触发消息推送

  1. 在开发工具 PyCharm 中,选中 consumer_example.py 文件,右键单击,并执行 Run

    基于 Pulsar 获取消息推送(Python SDK)

  2. 通过 App 端操作设备。如打开测试设备的开关,或者调整设备其他参数。

  3. 在开发工具 PyCharm 上自动获取到消息推送展示。

    基于 Pulsar 获取消息推送(Python SDK)

  4. 数据展示,字段含义请参考 消息类型

消息推送信息解析

开启设备

  • 接收的消息

    received message origin payload: {"data":"5dBU8WiRS1+zydoFTtaVKuL+DnRGSSj1VvrRH4pN1kvawIq2mG/fZTd9TCimqpGPzQtf9wFhkSQ6IBE2P3yYPj6CrsqFEQvL9PFeHpD9Z9KadznFwSQX6sgRa2f2ANFHDTC8pZ0+fLnWge7AqPG4LdxobOPC7kNpk92hmXjB0PEOZ2Du4MbP4NSN49QcJ4MPoKVOkbMxkxYUbynUW5fQ6FgHYZYcTUp+a0vF/oS3VL3jGH5tallpI10RZxofJ72f","protocol":4,"pv":"2.0","sign":"b8a548131304b49b524fca193f9ffd63","t":1630979005761}
    
  • 解析 payload 数据

    decryptContentData={"dataId":"fe3a7d80-0f7c-11ec-8511-024283c73485","devId":"vdev******86991","productKey":"na****jz","status":[{"1":"true","code":"switch_led","t":1630979005725,"value":true}]}
    

    payload 数据解析方法参见 数据签名和解密。SDK 中已封装 payload 解密方法。

调整设备参数

  • 接收的消息

    received message origin payload: {"data":"z/xrNsO26LmxprqP0OaMSXdSXy2jAEiz0blUCnlUZe7awIq2mG/fZTd9TCimqpGPzQtf9wFhkSQ6IBE2P3yYPj6CrsqFEQvL9PFeHpD9Z9KadznFwSQX6sgRa2f2ANFHDTC8pZ0+fLnWge7AqPG4LSlV4VEv7NtZ0T9wsM0xsQe+Gd3lcDRjtoWkeHTaIhvNzw8Y01IymwbZVRlVvpO3bLeIRohJoYtnI0lpflt6tcoKE7H3tlNNyLhx/y903ldy7z0o3iD5KROUiGtsAvdO0WfAsVxl87x4EbH6A7FLPOR2vyfiUckMP3+KlQR/CA6UtuuExvaaSNCeSx8NL2Rpmw==","protocol":4,"pv":"2.0","sign":"7ce23e6fb11386020cc4a58524cf2a4e","t":1630979195061}
    
  • 解析 Data 数据

    decryptContentData={"dataId":"6f0f12a7-0f7d-11ec-8511-024283c73485","devId":"vdev******86991","productKey":"na****jz","status":[{"2":"white","code":"work_mode","t":1630979195023,"value":"white"},{"3":"764","code":"bright_value_v2","t":1630979195023,"value":764}]}