2011-08-12 125 views
2

我們正在考慮在我們的應用程序中使用MSMQ作爲消息處理服務。我們想要的是 - 位於網絡負載平衡器(NLB)後面的服務器場中的MSMQ,負責在節點間分配負載。我有以下問題,我無法在網上找到任何指示。服務器場中的MSMQ

1)我是否需要在所有節點上安裝MSMQ?
2)如果是這樣,當發件人應用程序發送消息到MSMQ應發送到所有節點? 3)如果對我的第二個問題的回答是肯定的,那麼當客戶端應用程序收到消息時,應該如何通知其他節點有關客戶端收到的消息並隨後從中刪除?

希望任何幫助/指針。

回答

4

這裏有一些博客文章,可以幫助:

Q1)我需要安裝的所有節點MSMQ?
A1)您需要在每個將傳遞消息的服務器上安裝MSMQ。 Q2)如果是這樣,當發件人應用程序向MSMQ發送消息時,是否應該發送給所有節點? A2)這是負載均衡的一種方式,您可以將X消息發送到X節點,但只能從1個節點讀取,丟棄其他副本。
另一種方法是發送給網絡負載均衡器,該網絡負載均衡器向一個隨機選擇的節點發送一條消息,儘管MSMQ非常粘稠,因此非常難以/不可能以這種方式負載平衡高容量。如果對我的第二個問題的答案是肯定的,那麼當客戶端應用程序收到一條消息時,應該如何通知其他節點有關客戶端正在接收的消息並隨後將其從消息中刪除?
A3)這是您建議的負載平衡類型的負面影響。除非您的應用程序刪除它或TimeToBeReceived計時器到期,否則MSMQ不會刪除消息。基本上,如果您需要避免重複的消息處理,您將需要協調客戶端應用程序。

乾杯
約翰Breakwell

+0

感謝約翰,爲響應和指針。 – muruge

+1

關於A2,「MSMQ非常粘性」,這裏有一個很好的討論:http://blogs.msdn.com/b/johnbreakwell/archive/2009/03/19/load-balancing-msmq-a-brief-discussion。 aspx「默認情況下...等待2或5分鐘...在網絡連接斷開之前處於非活動狀態....可以強制MSMQ幾乎立即刪除連接....不建議這樣做,但是,因爲下一條消息必須等待創建新的網絡連接「 –

+0

謝謝,尼爾森:-) –