【问题标题】:With MSMQ how do I avoid Insufficient Resources when importing a large number of messages into a queue?使用 MSMQ 将大量消息导入队列时如何避免资源不足?
【发布时间】:2014-02-12 14:21:08
【问题描述】:

什么?

我有一个私有 MSMQ 事务队列,我需要导出所有 (600k) 消息,清除然后将消息导入回队列。导入这些消息时,我目前正在使用单个事务并收到资源不足错误。我可以切换到使用多个事务,但我需要一种方法来计算我可以在单个事务中处理多少条消息,有什么想法吗?

为什么?

如果我们不定期执行此操作,.mq 文件会变得臃肿和碎片化。如果有其他方法可以解决此问题,请告诉我。

【问题讨论】:

  • 队列中通常有多少条消息?通过消耗所有消息来清除队列通常允许该活动自行发生。
  • 每个月都有变化,但最多可以收到 600k 条消息。到目前为止,除了清空队列然后将消息放回之外,我们还没有找到其他方法来对 .mq 文件进行碎片整理/收缩。
  • 是的。真的没有。 MSMQ 被设计为工作的方式,队列应该经常是空的。听起来您更多地将 MSMQ 用于存储而不是传输中的数据。如果可以的话,我会考虑在将来的某个时候将这些数据移出 MSMQ。
  • 等等,一个交易有60万条消息?

标签: msmq


【解决方案1】:

当我们得到 7500 个总大小约为 30 GB 的 MQ 文件时,我们遇到了同样的问题。 解决方案非常简单。 您应该清除此机器上的事务死信消息,然后重新启动 MSMQ 服务。 当此服务启动时,它会运行碎片整理程序。它压缩已用空间并删除未使用的 MQ 文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-10
    • 2015-01-24
    • 2023-03-23
    • 2011-07-31
    • 2010-12-16
    • 1970-01-01
    相关资源
    最近更新 更多