当前位置: 首页 > 知识库问答 >
问题:

如何在 Cadence 中处理活动工作线程故障

陶征
2023-03-14

我正在探索Cadence,有一个关于故障恢复的问题。我知道工作流是容错的(工作流历史被维护),以防工作流工作人员失败。我找不到活动工作人员的相同保证。例如:假设一个活动对服务A进行了RPC调用,这改变了一些远程对象状态;现在,让我们假设调用成功了,但活动工作人员在通知Cadence服务之前丢失了。在这种情况下,Cadence会在一个新工作人员上再次安排活动吗?

我知道如果服务A是幂等的,上述可能不是问题。如果服务A不是幂等的,在Cadence中处理上述场景有什么建议?

共有1个答案

云文栋
2023-03-14

默认情况下,Cadence不会重试活动。因此,在活动工作人员失败的情况下,工作流将获得超时错误,并且可以根据其业务逻辑对其进行相应的处理。对于非幂等活动,通常通过运行补偿活动来完成。

Cadence还支持幂等活动的自动重试。这是通过在调用活动时提供重试策略来实现的。

 类似资料:
  • 在Cadence/Temoral工作流编程中: < li >不允许使用本机线程库。例如,在Java中,线程必须通过< code>Async.procedure或< code>Async.function创建,而在Golang中,线程必须通过< code>workflow创建。去吧。那为什么呢? < li >有没有类似使用本机线程的竞争条件?例如,为了线程安全,应该使用< code>Hashtabl

  • 我有一个由多台机器组成的网络,我正在使用cadence go客户端。 1号机需要登记活动 机器2需要注册工作流程。 机器3需要启动以启动工作流。 cadence前端服务在另一台机器上。 如何使用 go 客户端执行此操作?此外,收银机是否仅将工作流/活动保存在内存中?我怎样才能把它们推到节奏服务,以便其他机器也能找到它们。

  • 在节奏工作流活动中,在迭代多个实体时存储当前光标位置的最佳做法是什么?这将允许工作流在发生故障时从最后一个光标开始。 存储当前光标的正确方法是什么?我们是否应该定期使用当前光标作为新光标继续?

  • 将是什么 线程不足,无法执行工作流。如果此消息始终显示,请选择WorkerOptions。应减小maxConcurrentWorklfowExecutionSize或WorkerOptions。maxWorkflowThreads增加。 处于阻塞状态的工作流在内存中保持活动状态??处于等待状态的工作流是否持续检查条件??更多的 -

  • Cadence使用tally发出一堆指标。可以使用Cadence SDK发出我自己的指标吗? Go SDK有,但当我刚刚调用它时,它似乎不起作用。我是否缺少一些必需的配置?

  • 我正在上一门使用处理的课。 我在理解map()函数时遇到了问题。 根据文件记载(http://www.processing.org/reference/map_.html): 将数字从一个范围重新映射到另一个范围。 在上面的第一个示例中,数字25从0到100范围内的值转换为从窗口的左边缘(0)到右边缘(宽度)的值。 如第二个示例所示,范围之外的数字不会被钳制到最小和最大参数值,因为范围之外的值通常