首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >时态:何时以及如何使用本地活动?

时态:何时以及如何使用本地活动?
EN

Stack Overflow用户
提问于 2021-04-01 12:56:04
回答 1查看 1.8K关注 0票数 1

官方的时间文档谈到了地方活动。但是,目前还不清楚地方活动的优点或限制是什么,以及如何编码这些活动?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-01 12:56:04

这个职位称,

这里是执行单个活动工作流的一系列步骤.

  1. 工作流被启动,它将工作流任务添加到工作流任务队列中。
  2. 工作流任务由侦听工作流任务队列的工作流工作人员接收。
  3. 工作流任务是使用ScheduleActivityTask命令完成的。
  4. 将活动任务添加到活动任务队列中。
  5. 活动任务由活动工作者接收。
  6. 活动任务由活动工作者完成。
  7. 将工作流任务添加到工作流任务队列中。
  8. 带有活动结果的工作流任务由工作流工作人员接收。
  9. 工作流任务是使用CompleteWorkflowExecution命令完成的。

这里是执行本地活动的一系列步骤.

  1. 工作流被启动,它将工作流任务添加到工作流任务队列中。
  2. 工作流任务由侦听工作流任务队列的工作流工作人员接收。
  3. 工作流将本地活动任务调度到进程内本地活动任务队列中.
  4. 本地活动由侦听进程内本地活动任务队列的本地活动工作者执行。
  5. 本地活动任务将返回到工作流。
  6. 工作流任务由RecordMarker和CompleteWorkflowExecution命令完成。标记命令包含本地活动执行的结果。

本地活动的限制是:

  1. 它只适用于不超过工作流任务超时的短期活动。这意味着本地活动不支持心跳。
  2. 长时间的重试是不有效的。正常的活动实际上可以无限期地重试。
  3. 本地活动至少有一次语义,因为工作流任务的失败会导致它们的重新执行。
  4. 本地活动扩展工作流任务执行。当任务正在运行时,它无法对信号作出反应。因此它增加了信号处理的延迟时间。

-- @maxim的警告

当使用本地活动而不了解它们的局限性导致各种生产问题时,我们已经看到了多种情况。因此,我的建议是坚持正常的活动,除非您的用例需要非常高的吞吐量和大量的活动扇出非常短的活动。

代码示例java:

代码语言:javascript
运行
复制
  private final RetryOptions retryOptions = RetryOptions.newBuilder()
          .setInitialInterval(Duration.ofSeconds(1))
          .setMaximumInterval(Duration.ofSeconds(10))
          .setBackoffCoefficient(2.0)
          .setMaximumAttempts(3)
          .build();

  private final LocalActivityOptions laOptions =
          LocalActivityOptions.newBuilder()
                  .setRetryOptions(retryOptions)
                  .setStartToCloseTimeout(Duration.ofSeconds(10))
                  .build();

  private final Account acc = Workflow.newLocalActivityStub(Account.class, laOptions);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66904951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档