云工作流支持将流程作为消息投递到轻量消息队列(原 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
代码解析如下。
Action:固定为
MNS:SendMessage
。TaskMode:支持请求响应(RequestComplete)和等待用户自定义回调(WaitForCustomCallback)两种集成模式。
Name、Description:根据需要配置能表达业务含义的名称和描述。
参数说明
参数名称 | 是否必选 | 参数说明 | 示例值 |
参数名称 | 是否必选 | 参数说明 | 示例值 |
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 | 否 | 消息附加参数。 |
|
返回值说明
业务请求的返回结果,会被包装在一个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