0

假设我们需要向用户发送电子邮件并等待用户回复,然后继续工作流程。我们是否应该创建一个异步活动来发送电子邮件,并在收到回复电子邮件时完成活动?或者我们应该创建一个正常的活动来发送电子邮件,然后工作流等待一个信号,当回复电子邮件到来时,我们将信号发送到工作流?这两个选项是否等效?或者有一些差异可以用来决定哪一个用于不同的活动?

提前致谢

4

1 回答 1

2

我推荐这个用例的活动然后信号方法。原因是发送电子邮件和等待回复是两个不同的任务,具有不同的超时和重试策略。

如果发送电子邮件活动失败,则预计将在非常紧凑的重试计划中以短暂的超时重试。同时,用户操作的超时预计会更大(可能是几天或几周),并且通常不可重试。

编辑以回答重试问题:

但是如果我们确实想重试呢?假设我们希望用户在一天内回复电子邮件,否则我们再次发送。我们可以重试整个工作流程,但这并不理想,因为发送电子邮件和用户回复只是工作流程的一部分。我们是否应该将其设为子工作流程并重试子工作流程?

您重试整个交互。请参阅重试部分工作流的文件处理示例。这是它的Go SDKJava SDK版本。

于 2020-06-14T19:58:35.363 回答