本文说明如何使用微消息队列MQTT版的数据流出规则将微消息队列MQTT版的数据流出至函数计算HTTP函数。
操作流程
将数据流出至函数计算HTTP函数的操作如下:

创建函数计算HTTP函数
如何创建函数计算HTTP函数,请参见创建HTTP函数并配置HTTP触发器。
说明 本文以函数计算HTTP函数为例。其他类型的HTTP服务也可以参考本文操作。
创建微消息队列MQTT版实例
如何创建微消息队列MQTT版实例,请参见创建实例。
注意 目前仅美国(弗吉尼亚)和美国(硅谷)的微消息队列MQTT版服务支持将数据流出至HTTP服务。请确保您是在以上地域创建实例。
创建数据源Topic
如何创建数据源Topic,请参见创建数据源Topic。
创建数据流出规则
创建数据流出规则,将数据从微消息队列MQTT版数据源Topic流出至函数计算HTTP函数。
- 登录微消息队列MQTT版控制台,在顶部菜单栏选择实例所在地域。
- 在左侧导航栏,单击规则管理。
- 在规则管理页面,单击创建规则。
- 在创建规则面板,单击数据流出页签。
- 在数据流出页签下方,按提示设置以下参数,单击确定。
类型 参数 是否必填 示例值 描述 规则详情 规则ID 是 fc_http_rule 规则的全局唯一标识。取值: - 只能包含字母、数字、短划线(-)和下划线(_),至少包含一个字母或数字。
- 名称长度限制在3字符~64字符之间,长于64字符将被自动截取。
规则描述 是 数据流出至函数计算HTTP函数 规则的描述。 状态 是 启用 是否启用当前规则。取值: - 启用
- 禁用
数据源(Source) Topic 是 fc-http-test 数据源Topic。 订阅关系表达式 否 无 订阅关系的表达式。如果不设置订阅关系表达式,则默认数据源Topic下所有消息都会被转发。 - 表达式支持以下符号:
- 主题层级分隔符为正斜线(/),例如chat/teacher/room1。
- 单层通配符加号(+),例如chat/+。
- 多层通配符井号(#),如chat/#
- 最多支持5个表达式。
- 表达式之间是或的关系。
- 除层级分隔符外,只能包含字母,数字,短划线(-)以及下划线(_)。
- 长度不能超过64字符。
QOS 否 1 消息传输的服务质量。如果不设置QOS,则默认全部转发。取值: - 0:代表最多分发一次。
- 1:代表至少到达一次。
- 2:代表仅分发一次。
消息有效期 是 259200 消息的有效期。消息生存时间小于等于消息有效期的消息被推送。单位为秒。取值:1~259200。 数据目标(Target) 目标类型 是 HTTP 数据目标的类型。 Endpoint 是 https://18807708****.cn-hangzhou.fc.aliyuncs.com/2016-08-15/proxy/fc_http_for_mqtt_test/fc_http_function_test/ HTTP服务的接入点。本文以函数计算HTTP函数为例,因此填写函数计算HTTP函数的HTTP触发器的路径。 注意 目前仅支持公网类型的HTTP服务接入点。重试策略 否 无 数据流出失败后的重试策略。如果不设置重试策略,则默认无重试。 - 最多重试5次。
- 每次重试时间间隔固定为60秒。
规则管理页面的规则ID列表显示成功创建的数据流出规则。
进行安全校验(可选)
创建将数据流出至函数计算HTTP函数的规则后,微消息队列MQTT版会自动为规则生成一个安全校验Token。如果您的函数计算HTTP函数,需要确认接收的HTTP请求的来源为微消息队列MQTT版,则可以通过该安全校验Token进行签名校验。
- 在微消息队列MQTT版控制台的规则管理页面的规则ID列表ID,找到目标规则后,在其右侧操作列,单击详情。
- 在数据目标(Sink)区域,单击
,然后单击安全校验Token以复制安全校验Token。
- 参考以下信息以及获取的安全校验Token,修改您的HTTP函数代码以对安全校验Token进行签名校验。
- HTTP请求示例的参数如下:
SignatureVersion=1.0 &Format=JSON &SignatureNonce=ec4f2ea2-78bf-41a7-b1f7-1c9ba30c4d9b160625039**** &Message={ "clientId":"GID_MQTT_CONSOLE@@@lmqshpre011606292****", "payload":"dGVzdA==", "qoslevel":"1", "topic":"fc-http-test" } &Version=2020-04-16 &RuleId=fc-http-test &Signature=8H0vF0fZWTHMSxJUGDF**** &SignatureMethod=HMAC-SHA1 &Timestamp=2020-11-24T20:39:50Z
- HTTP请求参数的说明如下:
参数 类型 示例值 描述 SignatureVersion String 1.0 签名算法版本。取值:1.0。 Format String JSON 返回消息的格式。取值JSON。 SignatureNonce String ec4f2ea2-78bf-41a7-b1f7-1c9ba30c4d9b160625039**** 唯一随机数。用于防止网络重放攻击。在不同请求间要使用不同的随机数值。 Message String 消息内容。 clientId String GID_MQTT_CONSOLE@@@lmqshpre011606292**** 客户端ID。 payload String dGVzdA== 消息负载。为了防止HTTP请求出错,微消息队列MQTT版对请求中的消息负载进行了Base64编码。例如,您的原始消息负载是test,则经过Base64编码后是dGVzdA==。 注意 如果您的业务需要获取原始消息负载,您可以使用Base64.decodeBase64()方法对HTTP请求的消息负载进行Base64解码,从而获取原始消息负载。qoslevel Integer 1 消息传输的服务质量。 topic String fc-http-test 数据源Topic。 Version String 2020-04-16 API版本号。使用YYYY-MM-DD日期格式。取值:2020-04-20。 RuleId String fc-http-test 规则的全局唯一标识。 Signature String 8H0vF0fZWTHMSxJUGDF**** 签名结果串。 SignatureMethod String HMAC-SHA1 签名方式。取值:HMAC-SHA1。 Timestamp String 2020-11-24T20:39:50Z 请求的时间戳。日期格式。使用UTC时间按照ISO8601标准,格式为YYYY-MM-DDThh:mm:ssZ。 - HTTP请求的加签算法,请参见签名机制。
- HTTP请求示例的参数如下:
使用SDK接入
使用微消息队列MQTT版SDK将您的终端接入微消息队列MQTT版,从而使终端数据通过规则流出至函数计算HTTP函数。如需获取微消息队列MQTT版SDK,请参见SDK下载。
在文档使用中是否遇到以下问题
更多建议
匿名提交