2019独角兽企业重金招聘Python工程师标准>>>

1.自定义注解类

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Trace {String businessName() default "";}

2.在需要拦截的方法上加自定义注解@Trace

@Trace(businessName = "线上复核扫描出库单号")
@Token
@RequestMapping(value = "/mst-obd-review/checkorderno", method = {RequestMethod.POST, RequestMethod.GET})
public RespJson checkorderno(@RequestParam("orderNo") String orderNo,HttpServletRequest request) {
...

3.自定义拦截器

public class RpcTraceInterceptor extends HandlerInterceptorAdapter {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {TraceContext traceContext = (TraceContext) TraceContext.ctx.get();//清除traceidtraceContext.clear();//重新生成traceidMDC.put("traceId", traceContext.getTraceId());return super.preHandle(request, response, handler);}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {//请求结束情况traceidMDC.remove("traceId");super.afterCompletion(request, response, handler, ex);}
}
public class TraceContext {public static ThreadLocal ctx = new InheritableThreadLocal() { //此处用InheritableThreadLocal保证可以在子线程得到相同的traceId@Overrideprotected TraceContext initialValue() {return new TraceContext();}};private String traceId;public String getTraceId() {if (traceId == null || "".equals(traceId)) {int hashCodeV = UUID.randomUUID().toString().hashCode();if (hashCodeV < 0) {//有可能是负数hashCodeV = -hashCodeV;}// 0 代表前面补充0// 4 代表长度为4// d 代表参数为正数型traceId = String.format("%012d", hashCodeV);}return traceId;}public void clear() {traceId = null;}
}

转载于:https://my.oschina.net/u/2485283/blog/1859320

自定义request链路跟踪相关推荐

  1. 使用zipKin构建NetCore分布式链路跟踪

    本文主要讲解使用ZipKin构建NetCore分布式链路跟踪 场景 因为最近公司业务量增加,而项目也需要增大部署数量,K8S中Pod基本都扩容了一倍,新增了若干物理机,部分物理机网络通信存在问题,导致 ...

  2. ASP.NET Core整合Zipkin链路跟踪

    前言 在日常使用ASP.NET Core的开发或学习中,如果有需要使用链路跟踪系统,大多数情况下会优先选择SkyAPM.我们之前也说过SkyAPM设计确实比较优秀,巧妙的利用DiagnosticSou ...

  3. gogoclient java_链路跟踪-GRPC请求 - GoFrame官网 - 类似PHP-Laravel, Java-SpringBoot的Go企业级开发框架...

    在本章节中,我们将之前介绍HTTP Client&Server的示例修改为GRPC微服务,并演示如何使用GoFrame框架开发一个简单的GRPC服务端和客户端,并且为GRPC微服务增加链路跟踪 ...

  4. 全链路跟踪之线程上下文Thread Local实战(完整源码)

    写在开头: 我是「猿码天地」,一个热爱技术.热爱编程的IT猿.技术是开源的,知识是共享的! 写博客是对自己学习的总结和记录,如果您对Java.分布式.微服务.中间件.Spring Boot.Sprin ...

  5. 11|链路追踪:如何定制一个分布式链路跟踪系统?

    11|链路追踪:如何定制一个分布式链路跟踪系统 ? 你好,我是徐长龙,这节课我们讲一讲如何实现分布式链路跟踪. 分布式链路跟踪服务属于写多读少的服务,是我们线上排查问题的重要支撑.我经历过的一个系统, ...

  6. 微服务分布式架构中,如何实现日志链路跟踪

    摘要:接口设计出来返回结果值和编码,还有哪些是需要我们优化的结果参数?微服务分布式架构中,如何实现日志链路跟踪? 本文分享自华为云社区<微服务分布式架构中,如何实现日志链路跟踪?>,作者: ...

  7. scrapy自定义Request的缓存策略(减少内存占用)

    scrapy-redis大概的架构: 从redis中拉url,构造Request对象,写入SCHEDULER_QUEUE_CLASS定义的队列中,调度器从队列中拉取Request进行抓取 想自定义Re ...

  8. kong插件应用(熔断 限流,黑白名单,认证(basic,key,jwt,hmac,),授权,加密,zipkin链路跟踪,日志, prometheus可视化, 爬虫控制插件)

    全栈工程师开发手册 (作者:栾鹏) 架构系列文章 kong安装部署以及kong-dashboard参考:https://blog.csdn.net/luanpeng825485697/article/ ...

  9. Spring Cloud--Sleuth+Zipkin 链路跟踪/订单的流量削峰

    Sleuth 产生链路跟踪日志 A --> B --> C A的id会被当做整条链路的id 默认只有10%的日志会发到Zipkin A, USFHSAJFGVDMJ, USFHSAJFGV ...

最新文章

  1. MATLAB编程规范
  2. 面试中 项目遇见的难点答案_2019 百度、头条、小米、360、网易、拼多多等公司 Android 社招面试心得...
  3. apache 配置虚拟目录
  4. janusgraph整合mysql_图解图库JanusGraph系列-一文知晓“图数据“底层存储结构
  5. c语言告白恋爱专业,C语言实现520表白代码 祝你表白成功!
  6. tomcat中多个域名配置
  7. 【SICP练习】71 练习2.42
  8. 全网首发:java[50077:153519] Cocoa AWT: Not running on AppKit thread 0 when expected. libawt_lwawt.dylib
  9. 在鼠标右键菜单栏添加notepad++打开方式
  10. 男cd是啥意思_伪娘cd是什么意思
  11. 很开心你能来,不遗憾你走开
  12. 7-2 查询水果价格 (15 分)
  13. 两年工作经验的后端开发的工作方法小结
  14. RF在智能座舱测试中的应用
  15. 3.0时代,公关传播在人文营销中的应用
  16. C++控制台模拟 骇客帝国数字飞屏
  17. win10消息推送服务器,推送--Win10系统 - Win10系统官方网站
  18. 安装和使用WebStorm、idea (两者步骤是一样的)
  19. 用pymysql制作一个同学录小程序
  20. MySQL表空间碎片整理

热门文章

  1. 使用PagedDataSource类实现DataList和Repeater控件的分页显示
  2. 诗和远方:无题(四十六)
  3. Android之使用MediaMetadataRetriever类获取媒体信息
  4. Java中List与数组互相转换
  5. Spring,SpringMvc初始化监听配置
  6. python无条件跳转_python按按钮实现界面跳转_python实现界面跳转 - CSDN
  7. nvm安装npm出错问题解决方案
  8. 计算机应用基础第二版在线作业一,计算机应用基础在线作业一
  9. Ansible结合跳板机控制远程服务器
  10. vue+node全栈移动商城【6】-node接口配置文件