簡體   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