Emr*_*ker 3 cadence-workflow temporal-workflow
ActivityOptions 中有四个不同的超时选项,其中两个是强制的,没有任何默认值:ScheduleToStartTimeout和StartToCloseTimeout。
选择这些超时值时应考虑哪些因素?
正如问题中提到的,ActivityOptions 中有四种不同的超时选项,它们之间的差异对于 Cadence 新用户来说可能不是很清楚。首先让\xe2\x80\x99s简单解释一下它们是什么:
\n\nScheduleToStartTimeout:此配置指定工作流安排活动与活动工作人员拾取开始执行活动之间的最大持续时间。换句话说,它配置任务在队列中花费的时间。StartToCloseTimeout:这指定了活动工作线程从获取任务到向 Cadence 服务器报告任务完成所需的最长时间。ScheduleToCloseTimeout:此配置指定活动的端到端超时持续时间,\n从工作流安排该活动的时间到活动工作人员完成该活动的时间。HeartbeatTimeout:如果您的活动是心跳活动,则此配置基本上指定 Cadence 服务器在假定活动工作线程失败之前等待心跳的最长持续时间。如何选择合适的超时值
\n\nStartToCloseTimeout当您知道它的作用时,选择它就相当简单了。本质上,您应该将其设置得足够长,以便该活动可以在正常情况下完成。因此,您应该考虑所有可能影响活动工作人员所花费的时间和下游(即服务、网络等)延迟的因素。另一方面,您应该致力于保持该值尽可能小,以使您的端到端系统响应更快。如果您可以\xe2\x80\x99t 使此超时时间少于几分钟(理想情况下为 1 分钟或更短),则应考虑使用配置HeartbeatTimeout并在活动中实现检测信号。
ScheduleToCloseTimeout也很容易理解,但是更常见的是在这里选择不理想的值而导致的问题。因此,务必要特别注意此配置。
基本上,您应该考虑所有可能在活动任务队列中造成积压的事情。导致积压的一些常见事件包括:
\n\n理想情况下,任何活动在任务队列中等待时都不应超时,特别是在队列已备份且活动配置为重试的情况下。因为重试会将更多活动任务添加到队列中,从而使从积压中恢复变得更加困难,或者使情况变得更糟。另一方面,在许多用例中,业务需求确实限制了系统处理活动所需的总时间。ScheduleToCloseTimeout因此,只要业务需求允许,追求高值通常不是一个坏主意。根据您的用例,将您的活动在队列中保留超过几分钟可能没有意义,或者在超时之前将其保留几天可能完全没问题。
| 归档时间: |
|
| 查看次数: |
1603 次 |
| 最近记录: |