MQTT 触发器

最近更新时间:2025-08-21 18:10:12

我的收藏
您可以通过编写云函数来处理 MQTT 中收取到的消息。云函数后台模块可以作为消费者消费 MQTT 中的消息,并将消息传递给云函数。
MQTT 触发器具有以下特点:
Pull 模型:云函数的后台模块作为消费者,连接 MQTT 实例并消费消息。后台模块获取到消息后,会将消息封装到数据结构中并调用指定的函数,将消息数据传递给云函数。
同步调用:MQTT 触发器使用同步调用类型来调用函数。更多信息请参见 调用类型
注意:
当前消息队列 MQTT 版产品仅在部分地域开放,因此不同地域下的函数对 MQTT 触发器的开放程度存在差异,MQTT 已开放的地域均支持该功能。具体地域是否支持创建 MQTT 触发器以控制台实际展示为准。

MQTT 触发器属性

触发器名称:最大支持60个字符,支持 a-zA-Z0-9-_。必须以字母开头,且一个函数下不支持同名的多个 MQTT 触发器。
MQTT 实例:配置连接的 MQTT 实例,仅支持选择同地域下的实例。
Topic Filter:支持订阅自建 Topic 及 MQTT 消息队列内置系统 Topic。Topic Filter 表达式规则遵循 MQTT 协议的标准规则,可使用 “+”、“#” 通配符表达更多语义,详情请参见 MQTT V5.0 标准协议
消息属性过滤:通过自定义 WHERE 语句,表达更多、更灵活的消息属性过滤表达能力,所订阅Topic下,只有满足用户属性过滤声明的消息才会触发函数执行。具体用法请参见 消息属性 SQL 过滤
消费方式:顺序消费或非顺序消费,当前仅支持非顺序消费。
加密信息:需配置在 MQTT 实例 ACL 策略中具备访问权限的账号和密码。
开启 Base64 标准编码:会自动将您的消息内容进行 Base64 编码处理。
最大批量消息数:在拉取并批量投递给当前云函数时的最大消息数,默认为1,最高配置为10000。结合消息大小、写入速度等因素影响,每次触发云函数并投递的消息数量不一定能达到最大值,而是处在1 - 最大消息数之间的一个变动值。
重试次数:函数发生运行错误(含用户代码错误和 Runtime 错误)时的最大重试次数,默认为3。
最长等待时间:单次触发的最长等待时间。例如:用户配置了最大批量消息数为1000,最长等待时间为60秒。假设10秒后,云函数已经采集了1000条消息,则直接触发函数执行;假设过了60秒,云函数只采集到50条消息,也会触发函数执行。


MQTT 消费及消息传递

由于 MQTT 消息无主动推送能力,需要消费方通过拉取的方式,拉取到消息并进行消费。因此,在配置 MQTT 触发器后,云函数后台会通过启动 MQTT 消费模块,作为消费者,并在 MQTT 中创立消费客户端进行消费。
云函数后台的消费模块在消费到消息后,会根据一定的累积消息数量大小最大批量消息数等信息,组合为事件结构并发起函数调用(同步调用)。相关限制说明如下:
同步调用的事件大小限制:6MB,详情请参见 限制说明。如果 Topic 的消息很大,例如单条消息就已经达到6MB,那么由于同步调用的6MB限制,传递给云函数的事件结构中只会有一条消息,而不是用户配置的最大消息个数。
最大批量消息数:用户可配置,目前支持最高配置为10000。