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作为参数调用ReportTaskSucceededReportTaskFailed接口来回调任务的状态。

  • 服务参数(serviceParams)
    • MessageBody:发送的消息体字符串。
    • (可选)MessageTag:发送的消息Tag。
    • (可选)MessageAttributes:特定的消息推送需要指定该参数,格式为JSON字符串。
    • 邮件推送:参数必须包含MailAttributes,示例如下所示。
      {
       "MailAttributes": {
         "Subject":"{邮件主题}",
         "AccountName":"{发信地址(邮箱地址)}", 
         "AddressType":0,
         "IsHTML":true,  
         "ReplyToAddress":0
       }
      }

    以上参数,更多详细信息请参见PublishMessage