Class TraceContext

java.lang.Object
tech.riemann.nif.trace.TraceContext

public class TraceContext extends Object
链路追踪上下文 支持try-with-resources自动清理,避免ThreadLocal内存泄漏
Author:
Riemann

创建日期: 2026/03/27 10:14:44

  • Constructor Details

    • TraceContext

      public TraceContext()
  • Method Details

    • getTraceId

      public static String getTraceId()
      获取当前线程的链路ID
      Returns:
      链路ID
    • setTraceId

      public static void setTraceId(String traceId)
      设置当前线程的链路ID

      M15-低级: MDC 不接受 null 值(slf4j 2.x / logback 对 null value 抛异常)——null 时从 MDC 移除而非 put

      Parameters:
      traceId - 链路ID
    • clear

      public static void clear()
      清除当前线程的链路ID
    • generateTraceId

      public static String generateTraceId()
      生成一个新的链路ID
      Returns:
      新的链路ID
    • beginScope

      public static TraceContext.Scope beginScope(String traceId)
      创建一个新的TraceScope,支持try-with-resources自动清理 使用方式:
      try (TraceContext.Scope scope = TraceContext.beginScope("new-trace-id")) {
          // 业务逻辑
      } // 自动清理
      
      Parameters:
      traceId - 链路ID
      Returns:
      TraceScope实例
    • beginScope

      public static TraceContext.Scope beginScope()
      创建一个新的TraceScope,使用新生成的traceId
      Returns:
      TraceScope实例
    • wrap

      public static <T> Callable<T> wrap(Callable<T> callable)
      包装一个Callable,在执行时保持trace上下文
      Type Parameters:
      T - 返回值类型
      Parameters:
      callable - 待包装的callable
      Returns:
      包装后的callable
    • wrap

      public static Runnable wrap(Runnable runnable)
      包装一个Runnable,在执行时保持trace上下文
      Parameters:
      runnable - 待包装的runnable
      Returns:
      包装后的runnable
    • wrap

      public static <T> Supplier<T> wrap(Supplier<T> supplier)
      包装一个Supplier,在执行时保持trace上下文
      Type Parameters:
      T - 返回值类型
      Parameters:
      supplier - 待包装的supplier
      Returns:
      包装后的supplier