Send()在队列已满时不会抛出异常。
我有两个私人消息队列,比如queue和queue1,我将queue1的消息存储设置为少量5120 kb,在我的程序中我发送消息到queue和queue1,当queue1已满而全局队列是不完整,queue1上的Send()方法不会抛出异常,为什么会这样?我期待queue1上的send()方法抛出异常,所以我知道它已经满了。
答案 0 :(得分:1)
我认为这是设计的:
来自MSMQ FAQ:
MQSendMessage()总是成功,即使很明显 消息无法发送。为什么? MQSendMessage()的成功没有 保证将消息传递到最终目的地。该 MQSendMessage()的成功仅仅意味着本地MSMQ服务 成功接受了该消息,它将尽快处理 可能。它并不意味着向其传递信息的任何保证 目标队列。失败的原因有很多 信息。例如:
根据设计,MQSendMessage()将在所有这些情况下成功。它是 拒绝此类消息的目标计算机。或者消息会 等待传出队列,直到它过期。
- 您尝试将非事务性消息发送到事务队列。
- 您将邮件发送到超出其配额的队列。
- 您将邮件发送到不授予您发送权限的队列。
- 使用DIRECT格式名称将消息发送到不存在的计算机。