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

更新时间:2024-10-21 09:47:22

云工作流支持将流程作为消息投递到轻量消息队列(原 MNS) SMQ(Simple Message Queue (formerly MNS))中。本文介绍云工作流集成轻量消息队列(原 MNS)的示例代码、参数说明、返回值说明和支持的集成模式。

示例代码

以下为一个典型的云工作流集成轻量消息队列(原 MNS)的示例代码。

Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
StartAt: SendMessage
States:
  - Type: Task
    Name: SendMessage
    Action: MNS:SendMessage
    TaskMode: RequestComplete
    Description: 调用mns示例
    Parameters:
      resourceArn: acs:mns:cn-hangzhou:1231231****:/queues/fnf-mns-queues/messages
      message: 
        body: ok
      priority: 1
      delaySeconds: 10
      messageTag: aaa
      messageAttributes: 
        MailAttributes:
          Subject: subject
          AccountName: account
          AddressType: 123
          IsHTML: true
          ReplyToAddress: 456
        SMSAttributes:
          FreeSignName: test-free-sign-name
          TemplateCode: test-template-code
          Type: test-type
          Receiver: test-receiver
          SmsParams: test-sms-params
    End: true

代码解析如下。

参数说明

参数名称

是否必选

参数说明

示例值

参数名称

是否必选

参数说明

示例值

resourceArn

轻量消息队列(原 MNS)中主题或队列资源对应的ARN标识。

acs:mns:cn-hangzhou:1231231****:/queues/fnf-mns-queues/messages

message

消息正文。可以是一个文本,也可以是一个结构或者是数组。如果是结构或者是数组,会先将其转换为JSON再发送出去。

This is a test message

priority

指定消息的优先级权值,优先级更高的消息,将更早被消费。

取值范围:1~16,数值越小优先级越高。

默认值:8。

8

delaySeconds

消息发送后,经过DelaySeconds设置的时间后可被消费。

取值范围:0~604800,单位为秒。

默认值:0。

0

messageTag

消息标签。仅主题模型消息支持此属性。

tag

messageAttributes

消息附加参数。

messageAttributes: 
  MailAttributes:
    Subject: subject
    AccountName: account
    AddressType: 123
    IsHTML: true
    ReplyToAddress: 456
  SMSAttributes:
    FreeSignName: test-free-sign-name
    TemplateCode: test-template-code
    Type: test-type
    Receiver: test-receiver
    SmsParams: test-sms-params

返回值说明

业务请求的返回结果,会被包装在一个JSON对象中,示例如下。

{
    "MessageBodyMD5":"74B87337454200D4D33F8**********",
    "MessageID":"02CCC72A80767FCE7FE97DDC**********",
    "ReceiptHandle":"",
    "RequestID":"65387E5A44383182**********"
}

执行模式

云工作流集成轻量消息队列(原 MNS)时,仅支持请求响应(RequestComplete)等待用户自定义回调(WaitForCustomCallback)集成模式。云工作流轻量消息队列(原 MNS)发送消息后,当前HTTP请求完成即视为对应的Task完成,并以HTTP Server端返回的数据作为当前Task的输出。

RequestComplete

云工作流轻量消息队列(原 MNS)发送消息后,即视为当前Task完成,并以轻量消息队列(原 MNS)的返回值作为Task的输出。

WaitForCustomCallback

轻量消息队列(原 MNS)完成消息发送以后,当前工作流进入挂起状态。需要用户调用ReportTaskSucceeded - 汇报指定的任务执行成功ReportTaskFailed - 汇报指定的任务执行失败接口返回执行结果,然后继续推进流程执行。

用户可以在data参数下,增加一个key,并引用$Context.Current.TaskToken表达式获取消息,此消息为收到回调时需要使用的Token的值。

  • 本页导读 (1)
  • 示例代码
  • 参数说明
  • 返回值说明
  • 执行模式
  • RequestComplete
  • WaitForCustomCallback