繁体   English   中英

根据信号恢复Cadence Workflow而不阻塞线程

[英]Resume Cadence Workflow based on signal without blocking the thread

我们想要构建一个工作流,其中包含按该顺序执行的以下步骤

  1. 执行一些同步活动。
  2. 通过 kafka 事件触发外部操作。
  3. 监听 kafka 事件以获取操作结果。
  4. 根据结果执行一些其他活动。

Kafka 可能包含与工作流无关的事件,因此我们需要一个单独的工作流来过滤该特定工作流的事件。

使用 cadence 我打算将它分成两个工作流程

  • 工作流程1:1 -> 2 -> 等待信号 -> 4
  • Workflow2: 3 -> 调用 workflow1.signal

是否可以在没有实际阻塞线程的情况下等待工作流1中的信号,以便线程可以同时处理另一个工作流。

我认为对 Temporal/Cadence 的工作方式存在一些误解。 没有要求不阻塞线程以使其他工作流能够取得进展。 Worker 实例处理这种情况没有问题。

因此,我建议阻止工作流中的线程等待信号,因为这是解决您的业务需求的最简单方法。

作为旁注,我不明白为什么您需要第二个工作流程。 不需要有一个工作流来过滤 Kafka 事件。 您可以直接在发出第一个工作流信号的 Kafka 使用者中执行此操作。

我有一些编写 Kafka/Kinesis 消费者的经验(不与 Cadence 合作,但计划很快这样做)。 我的感觉是,您只需要阻塞 1 个消费者线程并等待来自 Kafka stream 的新事件。 这个消费者可以住在任何地方,只要它可以与您的 Cadence 系统对话以向工作流程发送信号。 对于每条Kafka消息(过滤掉不相关的),如果可以设计成包含所有信息供消费者决定向哪个工作流发出信号,那将非常简单。 如果您无法控制消息中的内容(听起来您有一个现有的流),这是一个小技巧。 您的消费者可能需要根据消息中的其他标识符查找要调用的工作流

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM