google-cloud-platform - 将消息发布到特定子文件夹
问题描述
我正在尝试使用 Google Cloud Platform 制作一个小物联网项目。
我在“IoT Core”部分创建了一个注册表和一个设备,并将注册表连接到一个默认主题。我还为该主题指定了三个子文件夹:“events”、“config”和“status”。现在,我想为传入消息连接一个“云功能”,但我找不到如何配置单个子文件夹来监控如何在“云发布/订阅”部分中发布消息。
所有文档都讨论了单个主题,所以....我是否缺少一些关于它如何工作的基本概念?
解决方案
需要后退一步。你想对各种子文件夹做什么?这可能是对设备与云之间的通信方式的误解。
所以,有 3 个 MQTT 主题,它们是事件/配置/状态(不是状态)。那些根本不映射到 Pub/Sub 主题。它们都在 IoT Core 中单独处理。
事件是设备->云,并被放入您在创建注册表时指定的 Pub/Sub 主题中。设置子文件夹就是将遥测从同一设备拆分到多个位置进行处理。因此,例如,您有想要进入一个发布/订阅主题的临时数据,以及想要进入另一个主题的压力数据。处理此问题的另一种方法是将函数附加到主 pub/sub 主题,解析遥测数据,然后根据有效负载本身将 Pub/Sub 消息重新发布到不同的位置。
Config 是 Cloud->device,通过调用 IoT Core Admin SDK 来启动。如果您的设备订阅了 /config/ MQTT 主题,那么当某个外部实体向您的设备的 IoT Core 发送配置消息时,他们将在 MQTT 客户端的 on_message 处理程序上获得回调(确切的代码当然取决于所使用的库) .
状态是设备->云,但经过特殊处理,不会进入任何 Pub/Sub 主题。IoT Core Admin SDK 可以检索结果。这是设备报告其状态然后外部进程/应用程序获得该状态的一种方式,而无需回调设备本身。例如,当您的设备未保持连接时,这尤其有用,但您仍希望能够根据最后一个已知状态执行操作。
因此,您可以使用 Cloud Functions 的唯一一个是 /events/ 主题。这是通过部署 Cloud Function 并选择 Pub/Sub 发布事件挂钩作为该函数的触发机制,并将 IoT Core 的注册表 Pub/Sub 主题指定为事件源来完成的。然后,只要您的设备将遥测数据发布到 /events/ MQTT 主题,它就会发布到该 Pub/Sub 主题(我知道这很困惑,因为我们将它们都称为主题)并且 Cloud Function 将触发。
希望这能澄清发生了什么?还是我完全错过了这个问题?:)
推荐阅读
- nopcommerce - 如何根据是否安装插件来管理 NopCommerce 3.90 中的依赖项注册?
- python - 'ToPILImage' 对象没有属性 'show'
- javascript - 为什么在这个简单的 jsfiddle 演示中没有触发点击事件?
- json - 如何将 Azure 存储 Blob JSON 导入 Azure SQL Server
- selenium-webdriver - 如何找到关闭标签后出现的文本。我已经使用了很多东西,但它没有定位
- rx-java2 - rxjava 在重试后完成当可完成时
- c - 无法理解模拟代码上的边界条件指针系统
- java - 无法使用 java 代码计算 aws s3 的授权代码?
- jenkins - Windows 中的 JENKINS_HOME 在哪里?
- python - SQLAlchemy - 错误 TVP 的行必须是序列对象