2010-01-29 64 views
0

我試圖讓兩個不同的應用程序監聽隊列,但到目前爲止,我沒有成功。如何使兩個服務器監聽MSMQ隊列

我已經嘗試了BeginPeek和BeginReceive方法,但都沒有工作。如果我使用BeginReceive和ReceiveCompleted事件,則只有一臺服務器收到該消息。如果我將BeginPeek與PeekCompleted一起使用,則系統會運行成一個循環,或者如果我設法從隊列中刪除消息,則只有一臺服務器接收它。

任何線索如何實現?

回答

0

正常的隊列方法不適用於你的情況,因爲它是一個隊列,所以先進先出。你有幾個選擇。

第一個選項是讓服務器發佈到兩個不同的隊列中,每個隊列一個用於每個客戶端應用程序。然後每個客戶端將使用BeginReceive/ReceiveCompleted方法。這很簡單,但如果要擴展到許多客戶端應用程序,則可能會出現問題。當我有幾個需要發送消息的下游系統時,這就是我所做的。

MSDN blog建議您可以將PGM多播地址附加到您的隊列。客戶端然後訂閱多播組並以這種方式接收消息。我對此沒有任何經驗,但看起來你失去了交易性,這可能是一個問題。