客户如何知道MSMQ MaximumQueueSize配额已达到?

时间:2013-07-30 04:36:30

标签: c# .net msmq

我注意到即使在达到消息队列配额后,“发送”方法也没有向客户端发出任何信号。

_messagequeue.MaximumQueueSize = 5; _messagequeue.Send(消息);

在上面的例子中,我期待_messagequeue.Send(message);达到队列配额后抛出“资源不足”或其他信号。但是“发送”方法将执行而没有任何错误,但消息将不会进入队列..那么客户端将如何知道何时停止推送消息?

2 个答案:

答案 0 :(得分:1)

我记得你需要在MSMQ中使用事务来确保消息到达目的地。

答案 1 :(得分:1)

请参阅http://technet.microsoft.com/en-us/library/cc754101(v=ws.10).aspx: ...您可以从要向其发送消息的计算机请求NACK(否定确认)。如果此确认返回到您的应用程序,并指示已达到此队列或计算机的配额,则您的应用程序可以停止发送消息或将消息卸载到另一个目标...

以及有关使用该信息的更多信息: http://msdn.microsoft.com/en-us/library/ms978430.aspx#bdadotnetasync2_topic4