如何使用 AWS Step Functions 将 TaskSuccess 发送到右边 activity?
How to send TaskSuccess to the right activity with AWS Step Functions?
所以,我正在研究状态机。它最多可以同时执行 20 或 30 次运行,参数不同。
其中一个状态是 activity worker(需要等待来自另一个步骤函数的输入,通过 lambda 函数从其中一个状态开始执行,因为您不能直接开始新的执行来自状态机)。
我知道如何为 activity 发送 "Task Success"。但是我怎样才能确保它被发送到正确的执行?
在这里使用 pub/sub 服务(例如 mqtt)会很有用。
- 在产生新执行的 lambda 中生成一个 UUID。
- 将 UUID 传递给新的执行,然后 return 将其传递给 activity worker。
- 新的执行完成后将 UUID 和结果写入队列。
- activity 工作人员从队列中读取并使用 UUID 找到正确的消息。
根据状态机的设计,当您的 activity 创建新的 StepFunction 执行时,您还可以将当前 activity 的 taskToken 作为输入参数传递。然后子执行中的最后一个状态可以使用传入的 taskToken 为父执行中的状态调用 Task Success,返回任何结果数据作为该状态的结果。 (不要忘记最后一个状态也必须为自己调用 Task Success。)
所以,我正在研究状态机。它最多可以同时执行 20 或 30 次运行,参数不同。
其中一个状态是 activity worker(需要等待来自另一个步骤函数的输入,通过 lambda 函数从其中一个状态开始执行,因为您不能直接开始新的执行来自状态机)。
我知道如何为 activity 发送 "Task Success"。但是我怎样才能确保它被发送到正确的执行?
在这里使用 pub/sub 服务(例如 mqtt)会很有用。
- 在产生新执行的 lambda 中生成一个 UUID。
- 将 UUID 传递给新的执行,然后 return 将其传递给 activity worker。
- 新的执行完成后将 UUID 和结果写入队列。
- activity 工作人员从队列中读取并使用 UUID 找到正确的消息。
根据状态机的设计,当您的 activity 创建新的 StepFunction 执行时,您还可以将当前 activity 的 taskToken 作为输入参数传递。然后子执行中的最后一个状态可以使用传入的 taskToken 为父执行中的状态调用 Task Success,返回任何结果数据作为该状态的结果。 (不要忘记最后一个状态也必须为自己调用 Task Success。)