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

如何取消从工作流异步调用的活动?

罗光华
2023-03-14

我们希望异步调用一个长时间运行的活动,并且在一段时间后基于外部信号,想要取消该长时间运行的活动。

Async.procedure(activities::longRunningActivity)
// Execute some synchronous activities
Workflow.await(() -> !messageQueue.isEmpty());
if (messageQueue.remove(0) == "something") {
    // Cancel longRunningActivity
}

目前,活动了解取消的唯一方式是通过心跳。确保您的活动心跳,并且不吞下心跳方法抛出的异常。

共有1个答案

公良照
2023-03-14

使用取消范围:

  CancellationScope longRunningCancellationScope =
          Workflow.newCancellationScope(
                  () -> Async.procedure(activities::longRunningActivity));
  longRunningCancellationScope.run();
  // Execute some synchronous activities
  Workflow.await(() -> !messageQueue.isEmpty());
  if (messageQueue.remove(0) == "something") {
      longRunningCancellationScope.cancel();
  }
 类似资料:
  • 假设我们需要向用户发送电子邮件并等待用户回复,然后继续执行工作流。我们是否应该创建一个异步活动来发送电子邮件,并在回复电子邮件到来时完成活动?或者我们是否应该创建一个正常活动来发送电子邮件,然后工作流等待信号,当回复电子邮件到来时,我们将信号发送到工作流?这两个选项是等效的吗?或者有一些差异可以用来决定哪一个用于不同的活动? 提前致谢

  • 我有一个Kafka分区,和一个parkStreaming应用程序。一个服务器有10个内核。当火花流从Kafka收到一条消息时,后续过程将需要5秒钟(这是我的代码)。所以我发现火花流读取Kafka消息很慢,我猜当火花读出一条消息时,它会等到消息被处理,所以读取和处理是同步的。我想知道我可以异步读取火花吗?这样从Kafka读取的数据就不会被后续处理拖动。然后火花会很快消耗来自Kafka的数据。然后我可

  • 基本上,当工作流退出时(尤其是在我们不想在所有错误返回中重复调用ActivityCleanupError的错误情况下),我们都要执行catchall活动ActivityCleanupNoError和ActivityCLanupError。 这是否适用于分布式决策?例如,如果工作流决策的所有权从一个工作人员转移到另一个工作人员,是否会触发对原始工作人员的延迟? 额外的问题:日志记录器在每次工作流运行

  • 我看到ccence cli支持cli的上述命令interface.How通过java执行此操作sdk.Im看到仅支持启动工作流。

  • 考虑以下情况: 当用户导航到页面时,将调度两个异步Redux操作以并行获取两组相关数据。如果这些获取中的任何一个失败,组件将检测到它,它将在下一个周期中呈现错误组件,而下一个周期又在装载时分派操作。 但是,其他行动仍有待解决/拒绝,将破坏清洁状态。目标是在调用action creator时,中断此(最好是许多其他)挂起的异步操作。好吧,不管发生什么,未决promise都应该以任何方式解决/回应。

  • 问题内容: 我在自己的类中拥有所有异步调用,因此我不想将aync’ly设置为全局变量。为此,我想从我的asunc postProcess方法返回对象,例如字符串。 能做到吗? 下面是我类的一般结构,例如,我想从onPostExecute()返回一个字符串。我看到在其他地方提到了委托,但这似乎很混乱,确定有办法为类或方法提供返回类型吗? 问题答案: 像下面这样 和听众课 你可以这样打电话