问题描述
我有两个名为 w1 和 w2 的工人
W1 主持活动 A1。
如果 w1 出现故障,它是否会在 w2 上自动创建以处理服务器故障转移?
我试过了,但它说 ActivityTimeOut 错误和工作流失败。
难道我们没有任何选择来处理这样的故障转移吗?
在这种情况下,活动不会超时。由于工人崩溃,它没有在预期时间内响应节奏服务。这是将其称为 ActivityTimeOut 的正确方法吗?相反,我们不能像 WorkerCrash 那样解决它吗?
解决方法
是的,但您需要设置正确的超时和重试选项:参见 concepts docs
,Cadence 默认不为活动提供 RetryOptions。因此,如果超时或失败,工作流将收到失败,如果未处理,则将失败。如果您希望重试某个活动,则必须在调用它时提供 RetryOptions。
Temporal 默认为任何活动提供 RetryOption。所以默认重试。
此时,Cadence 和 Temporal 都不会直接对 worker 崩溃做出反应。他们依靠活动超时来检测任何此类故障。因此,在调用 Activity 时指定正确的 StartToClose
超时至关重要。