2013-12-23 141 views
2

我想知道是否可以安全地託管一個NServiceBus端點作爲IIS內的事件發佈者?爲了澄清,我們使用託管在IIS中的應用程序作爲我們的CRM系統(Microsoft Dynamics CRM),並且我想在聯繫人信息更新時使用NServiceBus發佈事件。
MS CRM允許使用自定義插件對聯繫人更新作出反應,並且我打算創建一個通過NServiceBus爲該情況發佈'ContactUpdated'事件的插件。因此,這實際上意味着我的NServiceBus事件發佈端點被託管在IIS中。安全地承載IIS內的NServiceBus發佈者?

現在,我知道一個自託管NServiceBus端點將create its own worker thread 來監視來自隊列的傳入消息(在這種情況下訂閱消息)。因爲如果沒有更多傳入的Web請求,IIS可以自由卸載工作進程,通常是not a good idea to use IIS to host long-running processes in。 但是,我會說NServiceBus隊列監視線程不符合長時間運行的過程,因爲它不會進行任何處理,並且可以隨時停止:新的訂閱請求 將被排隊,直到網絡應用程序再次重新啓動。

我只是想知道如何從NServiceBus的角度來清理這個NServiceBus線程安全嗎?

(順便說一句,我還發現this文章,但我不得不承認,只有向外擴展的說法與我產生共鳴,這是不是在我們的情況有關。)

回答

2

是的,它是安全舉辦IIS中的NServiceBus發佈端點。如你所說,如果IIS要卸載你的工作進程,那麼任何掛起的訂閱請求都會在隊列中等待。這是合理的 - 只要您不對訂閱請求的處理順序和發佈的新事件做出任何假設。