代码之家  ›  专栏  ›  技术社区  ›  Nathan

从不从MSMQ中删除是否可以?

  •  2
  • Nathan  · 技术社区  · 17 年前

    我继承了一个应用程序,该应用程序从MSMQ中提取消息并对其进行一些处理,然后根据消息中的内容向数据库添加一些数据。消息被我不控制的第三方应用程序推送到队列中。

    虽然我对如何使用这些API有基本的了解,但我对MSMQ了解不多。

    无论如何,我注意到这些消息从未被删除,我们的客户端肯定从未明确地删除它们,我可以查看计算机管理,查看服务器上次重新启动时的消息。

    这是错的吗?

    3 回复  |  直到 17 年前
        1
  •  3
  •   Mitch Wheat    17 年前

        2
  •  1
  •   SqlRyan    17 年前

    我怀疑,虽然这不是最佳做法,但在重新启动时会清除队列,只要有足够的可用资源,您就永远不会遇到问题。

    这就是说,我会选择设置一些东西来定期清理队列,这样就不会让服务器崩溃。我对MSMQ不太熟悉,但是有什么方法可以告诉我消息是否已被处理?即使是运行的附加服务,也会检查队列中的消息并查看它们是否已出现在数据库中,如果已出现,则会将其删除?这样,您就不需要修改继承的代码库,因为它可以正常工作。

    一旦你决定了解决方案,请在这里发布更新-我很想知道你最终如何处理这个问题。谢谢

        3
  •  1
  •   John Breakwell    17 年前

    如果上次重新启动之前没有任何消息,则听起来这些消息是快速的。Express消息只存储在RAM中,不会持久化到磁盘,因此重新启动MSMQ服务将销毁它们。这可能就是消息量从未达到临界水平的原因。

    干杯 约翰·布雷克韦尔(MSFT)