问题描述
好吧,我现在刚刚开始使用 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