Rabbit MQ上的Instrumentation C#

问题描述 投票:1回答:1

我有一个WPF应用程序和一个工作进程,它从客户端应用程序中获取队列中的消息。

有几个用户可以点击多个项目,从而将多个进程发送到队列,因此我需要为每个进程提供某种唯一ID。

我想为此实现检测日志记录,但我发现很难为该进程提供单个主键或ID。我有消息ID可以用作ID,但是在调用方法时会丢失,我不想将它传递给每个方法。

例如,如果流程如下:

  1. 用户单击数据检索按钮
  2. 使用消息ID创建消息 - >登录检测消息ID
  3. 工作人员使用消息ID选择消息 - >使用相同的消息ID登录检测
  4. 调用数据检索方法(无消息ID) - >无法记录

基本上我不想将消息ID传递给每个方法(例如步骤4),因为它变得非常混乱。

我正在使用Castle Proxies来处理日志记录,但是再次找不到一个只有日志的公共ID的好方法,所以我可以一直记录请求以及每个部分需要多长时间。

我有一些非常相似的东西:Instrumentation With Interceptors

但是除了要调用的每个方法的ID之外,我还需要一个整体ID来将整个请求组合在一起。

c# instrumentation castle-dynamicproxy
1个回答
1
投票

据我所知,有两个选项:1。我不确定你的记录器是如何实现的。您可能需要注入记录器工厂。或者,2。如果没有并行代码,则考虑用户为ThreadStatic。或TPL的CallContext.GetLogicalData。但它看起来有点混乱,特别是对于TPL,你需要保持一个上下文。

© www.soinside.com 2019 - 2024. All rights reserved.