Spring Cloud 异步traceId为空解决

Spring Cloud 异步流程traceId和spanId为空,如EventBus或MQ等异步操作的traceId和spanId为空,需要手动生成traceId和spanId

@Slf4j
public abstract class MyJob implements SimpleJob {

    @Override
    public final void execute(ShardingContext shardingContext) {

        log.info(String.format("任务总片数: %s, 当前分片项: %s, 分片参数: %s", shardingContext.getShardingTotalCount(),
                shardingContext.getShardingItem(), shardingContext.getShardingParameter()));

        TraceHelper.newTrace();

    }
}

@Slf4j
@Component
public class TraceHelper {

    private static Tracer tracer;
    private static Environment env;

    @Autowired
    public void setTracer(Tracer tracer) {
        TraceHelper.tracer = tracer;
    }

    @Autowired
    public void setEnv(Environment env) {
        TraceHelper.env = env;
    }

    public static void newTrace() {
        tracer.startScopedSpanWithParent(getApplicationName(), tracer.newTrace().context());
    }

    private static boolean isNumber(String str) {
        return str.matches("-?\\d+");
    }

    private static String getApplicationName() {
        return env.getProperty("spring.application.name", "");
    }

    public static long getTraceId() {
        return tracer.currentSpan().context().traceId();
    }

    public static long getSpanId() {
        return tracer.currentSpan().context().spanId();
    }

    public static long getParentId() {
        return tracer.currentSpan().context().parentId();
    }

    public static boolean getSampled() {
        return tracer.currentSpan().context().sampled();
    }

    public static String getTraceIdString() {
        return tracer.currentSpan().context().traceIdString();
    }

    public static String getSpanIdString() {
        return tracer.currentSpan().context().spanIdString();
    }
}
上一篇 使用Docker部署Spring Cloud项目
下一篇 调用链监控Skywalking与Zipkin
目录
文章列表
1 Atlas配置bundle打包产物至assets目录
Atlas配置bundle打包产物至assets目录
2
vue-cli 3.0 脚手架安装及配置
vue-cli 3.0 脚手架安装及配置
3
OpenWrt软件包管理及LUCI汉化
OpenWrt软件包管理及LUCI汉化
4
Vue访问去掉url地址栏中的#符号
Vue访问去掉url地址栏中的#符号
5
CentOS 7搭建Nexus Maven私服
CentOS 7搭建Nexus Maven私服
最新评论
一位WordPress评论者
一位WordPress评论者
2月12日
您好,这是一条评论。若需要审核、编辑或删除评论,请访问仪表盘的评论界面。评论者头像来自 Gravatar。