本文共 640 字,大约阅读时间需要 2 分钟。
这一部分的课程,我们将学习如何通过编写 EMQ X 插件的方式来扩展 EMQ X 的功能。
Webhook 的局限性
在 IotHub 中我们使用了 EMQ X 的自带的 Webhook 插件,IotHub Server 通过使用 Webhook 插件来获取设备的上下线事件和 Publish 的数据,从开发和演示的功能的角度,这个插件是OK的,但是如果我们在生产环境中使用,你应该要注意到以下问题。
- Webhook 缺乏对身份的校验,EMQ X 在 Post 到指定的 Webhook URL 的时候,没有带上任何的身份认证信息,所以 IotHub 没有办法知道消息是否真的来自 EMQ X。
- 性能的损耗,在每次设备上下线,和 Publish 数据的时候,EMQ X 都会发起一个 HTTP 请求:建立连接、发送数据、再关闭连接,这部分的开销对 EMQ X 的性能有可见的影响,这还不是最糟的,在那些我们不关注的事件,比如设备订阅、设备取消订阅、送达等发生的时候 EMQ X 依然向 Webhook URL 发起一个请求,这完全是性能的浪费。
- 健壮性,假设 IotHub 的 Web 服务因为某种原因宕机了,在修复好之前,EMQ X 获取的上行数据都会丢失掉。
这也就意味着,IotHub 需要一个定制化更强的 Hook 机制:
- 能够对消息和事件的提供者进行验证;
- 只有在 IotHub 感兴趣的事件发生时,才触发 Hook 机制;
- 用可持久化的队列来解耦消息和事件的提供者&#
转载地址:http://qiiti.baihongyu.com/