我试图按照以下方式创建一个中毒消息场景。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