我正在解决WCF通过事务MSMQ(带netMsmqBinding)发送的消息似乎消失的问题.使用WCF的代码是在第三方程序集中,我无法更改.我几乎找不到问题的线索,但计划启用各种跟踪功能,以便确定问题所依赖的位置.
我启用了MSMQ 端到端跟踪.它为每个发送的消息记录两个事件.
我启用了详细的WCF跟踪.
我还有应用程序级别的日志记录,它记录由应用程序代码定义的消息ID(让我们称之为"应用程序消息ID").
我已经在发送的MSMQ消息上启用了正面和负面源日记功能.
我已在接收队列上启用了日记功能.
当消息丢失时,我知道丢失消息的应用程序ID(它由发送方记录).我现在想看一下End-to-End跟踪,看看消息是否写入了传出队列.
如何将端到端跟踪中的事件与应用程序级别日志和WCF跟踪相关联?
在System.Messaging中使用托管MSMQ API发送MSMQ消息时,消息的MSMQ ID在发送消息后可用.但是,当WCF执行发送操作时,我还没有找到记录此方法的方法.WCF跟踪记录了一个MSMQMessageId guid,但令人惊讶的是,这个值并不是我猜想的实际MSMQ id.是否可以访问实际的MSMQ消息ID并记录它?
在应用程序日志中记录本机线程ID以及应用程序级别ID和时间戳.MSMQ将本机线程ID记录到端到端跟踪中,因此实际上这可能足以进行关联.如果我找不到更优雅的解决方案,这是我的计划B.
您可以配置 Windows MSMQ 来感知消息主题,如果主题包含关键字,则触发应用程序。该应用程序可以记录传入的消息。在发送方,您可以将实际的消息 ID 写入消息主题,并将关键字添加到主题中。在接收方触发的应用程序中,可以访问主题中添加的关键字附近的实际消息 ID。
| 归档时间: |
|
| 查看次数: |
1182 次 |
| 最近记录: |