在 AWS X-RAY SDK .NET 中动态创建分段

问题描述

好吧,我现在刚刚开始使用 X-Ray 检测我的 .NET Core 应用程序,在 Startup.cs 中添加以下内容

AWSXRayRecorder.InitializeInstance(Configuration);
AWSSDKHandler.RegisterXRayForAllServices();

app.UseXRay("myApp"); //to get HTTP requests

如我所料,所有 httpRequest 都被拦截并记录在 XRay 控制台中。但是在同一个项目中,我有一个监听 RabbitMQ 消息的监听器,所以我有一个 MessageHandler。

我知道 XRay 不会自动检测这个 MessageHandler,因为我需要创建一个段。我知道我可以做这样的事情:

AWSXRayRecorder.Instance.BeginSegment("MyMethodABC"); 
... 
AWSXRayRecorder.Instance.EndSegment();

但我想知道是否存在一种无需在每个方法中都设置此 BeginSegment 的自动方法

解决方法

除了围绕逻辑手动开始/结束段/子段外,没有自动检测 RabbitMQ 调用的方法。

参考:https://docs.aws.amazon.com/xray/latest/devguide/xray-sdk-dotnet.html