集成轻量消息队列(原 MNS)主题

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)

  • 服务参数(serviceParams)

    • MessageBody:发送的消息体字符串。

    • (可选)MessageTag:发送的消息Tag。

    • (可选)MessageAttributes:特定的消息推送需要指定该参数,格式为JSON字符串。

    • 邮件推送:参数必须包含MailAttributes,示例如下所示。

      {
       "MailAttributes": {
        "Subject":"{邮件主题}",
        "AccountName":"{发信地址(邮箱地址)}", 
        "AddressType":0,
        "IsHTML":true,
         "ReplyToAddress":0
      }
      }

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