gpt4 book ai didi

.net - msmq 基础知识以及如何能够跟踪消息的进出时间

转载 作者:行者123 更新时间:2023-12-04 05:33:52 25 4
gpt4 key购买 nike

我已经阅读了许多教程和 msdn 文档,如下所示,但没有一个解释了当您从队列中读取消息时会发生什么......

  • http://msdn.microsoft.com/en-us/library/ms978425.aspx
  • http://msdn.microsoft.com/en-us/library/ms978430.aspx

  • 首先需要对 msmq 有一个基本的了解,因为我以前没有真正使用过它。因此,我有一些相当“新手”的问题:
  • 收听队列的客户端收到消息后会发生什么情况?它会自动从队列中删除吗?
  • 如果一个队列被许多客户端监听怎么办? msmq 会保证消息将到达任何(且仅)“一个”监听客户端吗?
  • 公共(public)/私有(private)队列之间的真正区别是什么?我应该什么时候去公共(public)队列?

  • 我还需要知道如何跟踪消息何时进入队列以及何时被消耗?

    最佳答案

  • 当从队列中取出一条消息时,它被视为已接收并从队列中删除。 Msmq 是强排序的 - 您将无法在其前一条消息之前收到一条消息。您可以使用 transactional queue如果您想根据消息接收对您的应用程序的意义来控制从队列中删除消息。
    除非它被删除,否则您将继续一遍又一遍地收到相同的消息。这称为 queue poisoning , 本身就是一个值得讨论的话题。
  • 收到一条消息时会删除,因此一次只有一个客户端可能会收到一条消息。您可以将接收与 Peek 结合使用如果你想要其他语义。
  • 私有(private)队列和公共(public)队列在编程访问方面并没有太大区别。主要区别在于它如何暴露给目录服务。私有(private)队列仍然可以通过队列路径公开。关于 types of destination queues on MSDN 有一个很好的解释。 .

  • WCF 有一个对队列进行抽象的 MSMQ 绑定(bind),因此如果您更倾向于使用契约(Contract)(尽管我个人不推荐它),这是一个替代方案。

    关于.net - msmq 基础知识以及如何能够跟踪消息的进出时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12227569/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com