【问题标题】:What happens to messages sent over MSMQ and WCF that exceed the receivers quota?通过 MSMQ 和 WCF 发送的超出接收器配额的消息会发生什么情况?
【发布时间】:2013-11-01 11:25:55
【问题描述】:

如果我使用WCF 发送消息,例如Http,邮件对于收件人来说太大了,发件人有问题,可以采取措施。

如果我使用WCF 通过MSMQ(非事务性)发送消息并且消息对于收件人来说太大,它似乎会消失,并且我没有得到客户端或服务器端的任何指示。

我有什么方法可以观察(并采取行动)此类事件吗?

【问题讨论】:

  • too large for the recipient 是什么意思?您指的是大于 4mb 的消息吗?
  • @gleng:超过服务器端配置的ReaderQuotas的消息。
  • 您是否检查过消息是否已移至子队列?该邮件可能已被视为有害邮件。

标签: c# wcf msmq readerquotas


【解决方案1】:

假设您的目标是一个 MSMQ(与 WCF 无关),这里有几项需要考虑。

  1. 要发布到 MSMQ 的单个消息的最大大小为 4Mb。
  2. 如果尝试将超过 4Mb 的消息发布到 MSMQ,您将收到以下错误: [System.ServiceModel.ExceptionDetail]:内部错误:资源不足,无法执行操作。
  3. 如果您的要求是将超过 4Mb 的消息发布到 MSMQ,那么解决方案很少,例如,
    • 使用 NServiceBus
    • 在发布过程中压缩消息,在检索过程中解压缩消息。
    • 实现 NServiceBus 逻辑,即将消息写入共享位置的文件,并将文件位置存储在消息中。

【讨论】:

    猜你喜欢
    • 2012-11-05
    • 1970-01-01
    • 1970-01-01
    • 2013-03-30
    • 1970-01-01
    • 2017-05-16
    • 1970-01-01
    • 1970-01-01
    • 2013-03-21
    相关资源
    最近更新 更多