我们可以说 Activity 在节奏或时间上是容错的吗?

问题描述

我有两个名为 w1 和 w2 的工人

W1 主持活动 A1。

如果 w1 出现故障,它是否会在 w2 上自动创建以处理服务器故障转移?

我试过了,但它说 ActivityTimeOut 错误和工作流失败。

难道我们没有任何选择来处理这样的故障转移吗?

在这种情况下,活动不会超时。由于工人崩溃,它没有在预期时间内响应节奏服务。这是将其称为 ActivityTimeOut 的正确方法吗?相反,我们不能像 WorkerCrash 那样解决它吗?

解决方法

是的,但您需要设置正确的超时和重试选项:参见 concepts docs

Java client docsGolang docs

,

Cadence 默认不为活动提供 RetryOptions。因此,如果超时或失败,工作流将收到失败,如果未处理,则将失败。如果您希望重试某个活动,则必须在调用它时提供 RetryOptions。

Temporal 默认为任何活动提供 RetryOption。所以默认重试。

此时,Cadence 和 Temporal 都不会直接对 worker 崩溃做出反应。他们依靠活动超时来检测任何此类故障。因此,在调用 Activity 时指定正确的 StartToClose 超时至关重要。