我注意到即使在消息队列配额达到之后,“发送”方法也没有向客户端发出任何信号。
_messagequeue.MaximumQueueSize = 5; _messagequeue.Send(消息);
在上面的例子中,我期待 _messagequeue.Send(message); 达到队列配额后抛出“资源不足异常”或其他一些信号。但是“发送”方法将执行没有任何错误但消息不会进入队列.. 那么客户端如何知道何时停止推送消息?
我记得你需要在 MSMQ 中使用事务来确保消息到达目的地。
请参阅http://technet.microsoft.com/en-us/library/cc754101(v=ws.10).aspx: ...您可以从要向其发送消息的计算机请求 NACK(否定确认)。如果此确认返回到您的应用程序,并表明已达到此队列或机器的配额,您的应用程序可以停止发送消息或将消息卸载到另一个目的地...
以及有关使用它的更多信息:http: //msdn.microsoft.com/en-us/library/ms978430.aspx#bdadotnetasync2_topic4