我試圖按照以下方式創建一箇中毒消息場景。MSMQ中毒消息和TimeToReachQueue
1-在服務器(事務隊列)上創建消息隊列。 2-創建一個接收器應用程序來處理該服務器上的傳入消息。 3-創建一個位於客戶機上的客戶端應用程序,該客戶機使用隊列的特定名稱向該服務器發送消息。
4-我使用的發送方客戶端的應用程序用下面的代碼(C#4.0框架):
System.Messaging.Message mm = new System.Messaging.Message("Some msg");
mm.TimeToBeReceived = new TimeSpan(0, 0, 50);
mm.TimeToReachQueue = new TimeSpan(0, 0, 30);
mm.UseDeadLetterQueue = true;
mq.Send(mm);
因此,這是設置超時到達隊列爲30秒。
- 第一次測試正常。消息已經通過,並被服務器應用程序接收。
- 我的第二個測試,我斷開了我的以太網電纜,然後從客戶機發送另一個。
我可以在客戶端計算機上的消息隊列中看到消息正在等待發送(「等待連接」)。我的問題是,當它超過30秒(或50秒)時,消息永遠不會進入客戶機上的死信隊列中。
這是爲什麼? ......我期待着它能夠在那裏超時。
測試在Windows 7(客戶端)/ Windows Server 2008的R2(服務器)
功能在Windows 7上。我剛剛使用舊測試應用程序運行測試,並在分配時間後消息從傳出隊列中消失。唯一不同的是我送到了一臺想象中的機器上,因爲我不能拉電纜。 所以它看起來像屬性沒有被正確設置。奇怪的。 – 2012-02-12 22:35:12