gpt4 book ai didi

wcf - 将 MSMQ 端到端跟踪与 WCF 跟踪和应用程序级别日志记录相关联

转载 作者:行者123 更新时间:2023-12-03 07:42:13 25 4
gpt4 key购买 nike

背景:

我正在对 WCF 通过事务性 MSMQ(使用 netMsmqBinding)发送的消息似乎消失的问题进行故障排除。使用 WCF 的代码位于第三方程序集中,我无法更改。我对问题所在几乎没有任何线索,但计划启用各种跟踪功能,以便查明问题所在。

上下文:

  1. 我已启用 MSMQ End-to-End Tracing 。它为发送的每条消息记录两个事件。

    • 将消息写入传出队列时的一个事件。该消息包含MSMQ消息id(由guid和整数组成,即7B476ADF-DEFD-49F2-AF5A-0CF27C5152C0\6481271)。
    • 通过网络发送该消息时的另一个事件。
  2. 我已启用详细 WCF Tracing .

  3. 我还有应用程序级别的日志记录,用于记录由应用程序代码定义的消息 ID(我们称之为“应用程序消息 ID”)。

  4. 我已对发送的 MSMQ 消息启用正向和负向源日志记录。

  5. 我已在接收队列上启用日志功能。

问题:

当消息丢失时,我知道丢失消息的应用程序 ID(由发送方记录)。我现在想查看端到端跟踪以了解消息是否写入传出队列。

如何将端到端跟踪中的事件与应用程序级别日志和 WCF 跟踪相关联?

想法:

  • 使用 System.Messaging 中的托管 MSMQ API 发送 MSMQ 消息时,消息的 MSMQ ID 在消息发送后可用。但是,我还没有找到在 WCF 执行发送操作时记录此信息的方法。 WCF 跟踪记录了一个 MSMQMessageId guid,但令人惊讶的是,该值并不是我猜测的实际 MSMQ id。 是否可以访问实际的 MSMQ 消息 ID 并记录它?

  • 在应用程序日志中记录 native 线程 ID 以及应用程序级别 ID 和时间戳。 native 线程 ID 由 MSMQ 记录到端到端跟踪,因此这实际上可能足以进行关联。如果我找不到更优雅的解决方案,这对我来说是 B 计划。

最佳答案

听起来你走在正确的道路上。不过你可以用这个来提高一点:

使用SvcConfigEditor.exe

  1. 为传播事件和事件跟踪配置 WCF 详细跟踪
  2. 为“格式错误的消息、服务消息、传输消息”配置 WCF 消息日志记录

WCF 1

使用 LogEntireMessage

WCF 3

从头到尾,追踪一切 WCF 2

确保在双方(您的和第 3 方可执行文件)上启用这些 *.config。

收集日志文件,并将它们全部添加到 SvcTraceViewer.exe

关于wcf - 将 MSMQ 端到端跟踪与 WCF 跟踪和应用程序级别日志记录相关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16025502/

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