博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
实时监控Cat之旅~对Get和Post进行封装,支持分布式消息树
阅读量:5810 次
发布时间:2019-06-18

本文共 2920 字,大约阅读时间需要 9 分钟。

对第三方接口的调用我们需要对GET和POST进行监控,看一些请求的执行是否成功,如A调用B,B调用C,C调用D,这一连串的东西需要我们使用cat进行记录,进行记录之后,我们可以很容易的发现请求响应的时间及是否出错,下面是我对这两种请求的封装。

///     /// cat中使用的HttpClient    ///     public class CatHttpClient    {        ///         /// 返回当前Cat上下文        ///         /// 
static CatContext GetCurrentContext(string message) { string currentUrl = System.Web.HttpContext.Current.Request.Url.AbsoluteUri; var context = PureCat.CatClient.GetCatContextFromServer(); if (context == null) { context = PureCat.CatClient.DoTransaction("xuexiba", currentUrl, () => { PureCat.CatClient.LogEvent("xuexiba", message, "0", currentUrl); }); } else { context = PureCat.CatClient.DoTransaction("xuexiba", currentUrl, () => { PureCat.CatClient.LogRemoteCallServer(context); PureCat.CatClient.LogEvent("xuexiba", message, "0", currentUrl); }); } return context; } /// /// Post数据 /// /// /// ///
public static HttpResponseMessage Post(string requestUri, HttpContent content) { var handler = new HttpClientHandler() { }; using (var http = new HttpClient(handler)) { PureCat.CatClient.SetCatContextToServer(http, GetCurrentContext("Post Request Sent...")); var response = http.PostAsync(requestUri, content).Result; return response; } } /// /// Get数据 /// /// ///
public static HttpResponseMessage Get(string requestUri) { var handler = new HttpClientHandler() { }; using (var http = new HttpClient(handler)) { PureCat.CatClient.SetCatContextToServer(http, GetCurrentContext("Get Request Sent..."));//设置接口api的头,发送 var response = http.GetAsync(requestUri).Result; return response; } } }

在程序中使用非常方便,如下代码,一看便知

[AllowAnonymous]        public void Step1()        {            Lind.DDD.CatClientPur.CatHttpClient.Get("Http://localhost:4829/AdminCommon/Step2");        }        [AllowAnonymous]        public void Step2()        {            Lind.DDD.CatClientPur.CatHttpClient.Get("Http://localhost:4829/AdminCommon/Step3");        }        [AllowAnonymous]        public void Step3()        {            Lind.DDD.CatClientPur.CatHttpClient.Get("Http://localhost:4829/AdminCommon/Step4");        }        [AllowAnonymous]        public void Step4()        {            Lind.DDD.CatClientPur.CatHttpClient.Get("Http://localhost:4829/AdminCommon/Error");        }

而它产生的消息树也是我们希望看到的,即从step1到step4的记录,如图

下一讲我们将读一下,如何对一个请求从开始到结束进行cat的监控,敬请期待!

本文转自博客园张占岭(仓储大叔)的博客,原文链接:,如需转载请自行联系原博主。

你可能感兴趣的文章
d3 v4实现饼状图,折线标注
查看>>
微软的云策略
查看>>
Valid Parentheses
查看>>
【ES6】数值的扩展
查看>>
性能测试之稳定性测试
查看>>
ES6的 Iterator 遍历器
查看>>
2019届高二(下)半期考试题(文科)
查看>>
nginx 301跳转到带www域名方法rewrite(转)
查看>>
AIX 配置vncserver
查看>>
windows下Python 3.x图形图像处理库PIL的安装
查看>>
【IL】IL生成exe的方法
查看>>
network
查看>>
SettingsNotePad++
查看>>
centos7安装cacti-1.0
查看>>
3个概念,入门 Vue 组件开发
查看>>
没有JS的前端:体积更小、速度更快!
查看>>
数据指标/表现度量系统(Performance Measurement System)综述
查看>>
GitHub宣布推出Electron 1.0和Devtron,并将提供无限制的私有代码库
查看>>
Angular2, NativeScript 和 React Native比较[翻译]
查看>>
论模式在领域驱动设计中的重要性
查看>>