如何添加链路追踪
如何添加链路追踪
- 添加interceptor,生成traceId
public class TraceIdInterceptor implements HandlerInterceptor {
// String traceId = IdUtil.fastSimpleUUID();
// request.setAttribute("traceId", traceId);
// MDC.put("traceId", traceId);
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String traceId = request.getHeader("traceId");
if (traceId == null) {
traceId = IdUtil.fastSimpleUUID();
}
request.setAttribute("traceId", traceId);
MDC.put("traceId", traceId);
return true;
}
}
注册拦截器
registry.addInterceptor(new TraceIdInterceptor()).addPathPatterns("/**");
- 添加forest 拦截器
package com.ssbio.ssbioerpapi.interceptor
import com.dtflys.forest.http.ForestRequest
import com.dtflys.forest.interceptor.Interceptor
import com.ruoyi.common.utils.ServletUtils
class TraceInterceptor : Interceptor<String> {
override fun beforeExecute(request: ForestRequest<*>): Boolean {
request.addHeader("traceId", ServletUtils.getRequest().getAttribute("traceId"))
return true
}
}
注册forest拦截器
forest:
timeout: 50000
connect-timeout: 50000
read-timeout: 50000
interceptors: com.ssbio.ssbioerpapi.interceptor.TraceInterceptor