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

Cadence工作流中外部状态转换的轮询

酆浩邈
2023-03-14

我有一个 Cadence 工作流,我需要轮询外部 AWS API,直到特定资源转换,这可能需要一些时间。我假设我应该将每个单独的“checkStatus”请求设置为活动,并让工作流执行睡眠/检查循环。但是,这意味着我的工作流历史记录中可能有无限数量的活动调用。这令人担忧吗?有没有更好的方法来实现这一点?

共有1个答案

仲孙文乐
2023-03-14

这取决于你想投票的频率。

>

  • 对于不经常进行的轮询(每分钟或更慢),请使用服务器端重试。调用活动时指定RetryPolicy(或用于Java的RetryOptions)。在RetryPolicy中,指定指数系数1和轮询频率的初始间隔。然后,如果轮询的资源未就绪,并且服务器将在指定的重试策略过期时间间隔内重试,则使活动失败。

    对于每几秒钟或更快的非常频繁的轮询,解决方案是在活动实现中实现轮询,作为一个循环进行轮询,然后在轮询间隔内Hibernate。为了确保在工作者失败/重启的情况下及时重启轮询活动,该活动必须在每次迭代时心跳。使用适当的RetryPolicy来重新启动此类失败的活动。

    在极少数情况下,当轮询需要定期执行一系列活动或活动参数时,应在两次重试之间更改,则可以使用子工作流。诀窍在于,父母不知道孩子打电话继续作为新人。它只有在孩子完成或失败时才会收到通知。因此,如果子级在循环中执行活动序列,并且定期作为新调用继续,则在子级完成之前,父级不会受到影响。

  •  类似资料:
    • 假设我有用不同语言编写的工人(Java

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

    • 我计划将 Cadence 或临时工作流用于架构,但我们计划在决定工作流时为用户提供很大的权力。在他们的用例中,节奏和时间都提到他们的SDK支持自定义DSL,但我看不到该功能。你能帮帮我吗?

    • 为用户可视化节奏工作流的最佳方式是什么? 我想在一个高层次的视图中向用户展示工作流的不同步骤(类似于大多数食品配送应用程序的功能:下单- 我对向用户展示实际执行的节奏活动不感兴趣,因为我不希望他们看到我的工作流程的详细信息,我只想可视化他们感兴趣的某种高级阶段。 一种方法是保留工作流的高级描述,并在工作流代码本身内部进行状态转换(在启动活动 X 时将阶段 Y 标记为已启动等)。但是,我试图将这个问

    • 我有一个以UTC的ZonedDatetime作为参数的工作流。在使用测试环境进行单元测试期间,我看到UTC区域在运行工作流时被删除。这种行为的原因是什么? [更新]事实证明,时区没有被删除,而是以某种方式转换为“Z”的区域ID,而不是原始的“UTC”,尽管它们基本上是相同的。示例代码,

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