2017-06-26 63 views
1

是否有實施事件採購網關的最佳實踐?網關是指基礎設施或服務,它允許從某些外部服務返回的狀態開始生成一組事件。EventSourcing網關(與外部系統同步)

即使應用程序基於事件採購,仍可能存在一些外部無法控制的權利。例如,您想要同步Azure AD中的用戶列表,並執行提示服務,返回用戶列表。然後,您從投影中獲得用戶列表,與外部狀態產生差異,並生成事件來填補這一差異。

或者您的應用程序是在線商店,您應該導入實際的美元/歐元/比特幣等級來顯示價格。網關可以輪詢某些貨幣提供商並生成事件。在簡單的情況下,這很容易,但如果投影狀態是更復雜的結構,那麼平凡的導入並不明顯。

也許這種情況下是否有通用的方法?

+1

「但是如果投影狀態是更復雜的結構,瑣碎的導入不明顯」你有沒有一個例子? – plalx

回答

4

使用poll-emit的構建集成適配器是正常的,我個人更喜歡這種整體集成方式。

但是,這與事件採購無關,因爲實際需要解決您的集成問題的方法是模擬外部系統自行發出事件所需的功能,並且可以構建消耗系統這些事件。

當這些事件從適配器到達您的系統 - 您可以隨心所欲地做任何事情,但事實上,事件源假設您將事件流中存儲自己的對象狀態,但萬一事件來自某個外部系統 - 這不是你的狀態。你可以從外部事件派生你的系統狀態,但這些將是你自己的事件。

+0

>當這些事件從適配器到達您的系統 好的,但這部分電路是最不清楚的。外部系統不會產生事件,它只有可觀察的狀態,應該表示爲事件序列。 主要任務是將共享狀態轉換爲可存儲在EventStore中的事件 –

+1

您可以將可觀察狀態轉換爲事件。例如,您從某個數據庫視圖(醜陋但通常)中讀取並發現差異,然後發出「ExternalStuffCreated」或「ThatThingWasApproved」等。 –