將NServiceBus Sagas與REST API集成/交互的最明智的方法是什麼?NServiceBus Sagas和REST API集成最佳實踐
的情況如下,
- 我們有一個負載均衡的REST API。根據負載情況,我們可以添加更多節點。
- REST API是一個DomainServices API的包裝。這意味着API可以直接使用。
- 我們想使用薩加斯的工作流程和實施NServiceBus分銷商向外擴展。
問題是,如果我們使用Sagas的REST API,實際的處理過程發生在API場中。這在某種程度上破壞了實施分銷商模式的目的。
另一方面,直接從Sagas使用DomainServives API,允許在工作節點中本地處理。採用這種方法,我們將不得不在多個地點維護API程序集,但吞吐量可能會更高。
我想了解最佳方法。就個人而言,我更喜歡使用API(如果可用),但這可能會給系統帶來煩瑣的感覺,並且可能需要更長的時間才能完成。
一個典型的順序可能是類似於發佈的在線廣告,
- 廣告主提交通過一個web應用程序的新廣告請求。
- Web應用程序調用相關API端點併發送命令 消息。
- 命令消息啓動新的發佈廣告Saga 實例。
- 佐賀發送一個命令來驗證呼叫者權限(在 過程/縮小處理API調用)(/過程出處理的API調用的)
- 佐賀發送一個命令以驗證 廣告數據
- 佐賀發送 命令到欺詐服務(第三方服務)
- 一旦內容和欺詐驗證成功,Saga向計費系統發送命令。
- 佐賀調用API調用來保存添加細節。 (在 過程輸入/輸出處理的API調用的)
這繼續直到廣告期滿時,有許多的重試和故障條件的路徑。
這個傳奇應該在擴展過程中解決的實際問題是什麼? –
吞吐量,實際的佐賀是短跑的過程,它跑得比較快,不超過幾秒鐘,它可能會有一個單一的爆發。但是請求的數量很高,因此有一個分銷商可以幫助擴大規模。 或者,正如我所提到的,擁有一個負載平衡的API也可以做同樣的事情,因爲實際的工作發生在API節點上,工作節點進行協調。 –
所以我理解這一點,你正在嘗試使用傳奇來調用一個負載平衡的Web服務?最重要的是,您希望有一個經銷商設置,以便您可以增加對此服務的呼叫數量?你需要一個傳奇嗎? – stephenl