Serverless 工作流任务步骤集成了轻量消息队列(原 MNS)主题模型,支持将消息发布到轻量消息队列(原 MNS)主题。通过设置发布消息参数可以实现主题消息推送,目前支持的推送类型有队列推送、HTTP推送和邮件推送。本文介绍集成轻量消息队列(原 MNS)主题模型的模式及相关消息参数。
集成模式
下文介绍了集成轻量消息队列(原 MNS)主题模型的两种模式,分别是请求响应(requestResponse)模式和等待回调(waitForCallback)模式 ,您可以选择任意一种模式来编排轻量消息队列(原 MNS)主题模型。
请求响应(requestResponse)模式
该模式下,任务步骤在消息发布请求完成后会继续执行流程。流程定义如下。
version: v1 type: flow steps: - type: task name: mns-topic-task resourceArn: acs:mns:::/topics/{topicName}/messages # 调用轻量消息队列(原 MNS)主题资源 pattern: requestResponse # (可选) 默认模式 outputMappings: # PublishMessage 返回参数 - target: messageID # 消息ID source: $local.MessageId - target: requestID # 请求ID source: $local.RequestId - target: messageBodyMD5 # 消息体MD5 source: $local.MessageBodyMD5 serviceParams: # PublishMessage 请求参数 MessageBody: $.messageBody # 消息体 MessageTag: $.messageTag # (可选) 消息Tag MessageAttributes: $.messageAttributes # (可选) 消息额外属性,必须为`JSON`
等待回调(waitForCallback)模式
该模式下,任务步骤在发布消息后流程会等待,直到收到回调通知后才继续执行流程。流程定义如下。
version: v1 type: flow steps: - type: task name: mns-topic-task resourceArn: acs:mns:::/topics/{topicName}/messages # 调用轻量消息队列(原 MNS)主题资源 pattern: waitForCallback # 等待回调模式 inputMappings: - target: messageBody source: $input.messageBody - target: messageTag source: $.messageTag - target: messageAttributes source: $.messageAttributes - target: taskToken # 回调任务状态的Token(系统自动生成) source: $context.task.token serviceParams: # PublishMessage 请求参数 MessageBody: $ # 消息体 (将taskToken封装到MessageBody中) MessageTag: $.messageTag# (可选) 消息Tag MessageAttributes:$.messageAttributes # (可选) 消息额外属性
参数说明
上下文参数(context)
任务步骤TaskToken
任务步骤在等待回调(waitForCallback)模式下会自动生成用于回调任务状态的TaskToken,使用
$context.task.token
可以获取到该值。通过TaskToken作为参数调用ReportTaskSucceeded - 汇报指定的任务执行成功、ReportTaskFailed - 汇报指定的任务执行失败接口来回调任务的状态。
服务参数(serviceParams)
MessageBody:发送的消息体字符串。
(可选)MessageTag:发送的消息Tag。
(可选)MessageAttributes:特定的消息推送需要指定该参数,格式为JSON字符串。
邮件推送:参数必须包含MailAttributes,示例如下所示。
{ "MailAttributes": { "Subject":"{邮件主题}", "AccountName":"{发信地址(邮箱地址)}", "AddressType":0, "IsHTML":true, "ReplyToAddress":0 } }
以上参数,更多详细信息请参见PublishMessage。