2012-01-26 37 views
1

我正在使用NServiceBus傳奇來處理長時間運行的業務流程。我有一個MVC 3應用程序,可以從負載平衡器後面的多個Web服務器訪問。NServiceBus - 在MVC 3應用程序中檢索傳奇狀態

目標是我可以讓用戶啓動進程,並且我希望能夠確定傳奇的狀態。

這樣做的最好方法是什麼?我有一種感覺,我需要某種持久的存儲空間,但是我真的不希望因爲有每小時運行數千個這種特殊的傳奇的潛力而不得不大量使用我的數據庫。

回答

1

您可以內置到您的佐賀步驟,當狀態發生變化時,它會將狀態Bus.Sends()更改爲您的Web應用程序可以查看的緩存或PVM的另一端點。該端點可以在其他通道上與用戶進行通信,例如電子郵件。把它推到另一個端點將保持你的佐賀流動。

+0

我其實做了類似的事情。我有一個memcached服務器安裝程序,我只是將更改推向了該位置。這允許我的Web服務器(已經與memcached服務器通信)獲取更改。只需使用適當的鍵快速找到我的緩存記錄。 – Brandon

0

傳奇可以發佈事件來宣傳事物的狀態。即使沒有MVC應用程序「檢入」的要求,無論如何,這可能是一個好主意。

您的網絡應用程序可以訂閱此事件並更新內存狀態,這些Web請求可以檢查並顯示。當然,這不會在web進程重啓時生存下來。

爲了解決這個問題,這個傳奇可以支持「我忘了你說的話,請重新發送」命令。 MVC應用程序會在web應用程序開始時(如果知道足夠重要)或按需發送。然後,佐賀會通過Bus.Reply()向只是那個不是最新的服務器發送一個狀態報告給該服務器。