2016-07-30 76 views
0

我有許多服務器,每個服務器運行一個服務的單個實例/偵聽相同的隊列/端點(有意!)會產生Competing Consumer模式。使用MassTransit讓消費者脫機(計劃中斷)

該解決方案非常棒,因爲它提供了負載平衡和高可用性,並且非常適合我的使用情況。

然而,我希望能夠實現的是能夠使各個節點脫機的方式而沒有任何影響。換句話說,一種能夠告訴節點完成對已經收到的任何消息的處理,但不消耗任何消息的方式(而不是僅僅關閉服務並且不得不管理終止任何正在處理的消息)。

有什麼建議可以解決這個問題嗎?能夠做到這一點的一個好處是可以實現無中斷的滾動升級/部署。

謝謝!

回答

0

調用busControl.Stop();應該乾淨地關閉總線,包括正常關閉每個接收端點。這將允許當前的消費者完成,但是阻止新的消費者接收消息。

一旦Stop方法返回,該過程可能會退出,其餘節點將保持聯機狀態。