All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.nepxion.discovery.plugin.strategy.skywalking.monitor.SkyWalkingStrategySpan Maven / Gradle / Ivy

package com.nepxion.discovery.plugin.strategy.skywalking.monitor;

/**
 * 

Title: Nepxion Discovery

*

Description: Nepxion Discovery

*

Copyright: Copyright (c) 2017-2050

*

Company: Nepxion

* @author Haojun Ren * @version 1.0 */ import io.opentracing.Span; import io.opentracing.SpanContext; import java.util.Map; import org.apache.skywalking.apm.toolkit.trace.TraceContext; import com.nepxion.discovery.common.constant.DiscoveryConstant; import com.nepxion.discovery.plugin.strategy.monitor.StrategySpan; import com.nepxion.discovery.plugin.strategy.monitor.StrategyTracerContext; public class SkyWalkingStrategySpan implements Span { private Span span; private String traceId; private String spanId; public SkyWalkingStrategySpan(Span span) { this.span = span; this.traceId = createTraceId(); this.spanId = createSpanId(); } @Override public Span setOperationName(String operationName) { return span.setOperationName(operationName); } @Override public Span log(long timestampMicroseconds, Map fields) { return span.log(timestampMicroseconds, fields); } @Override public void finish(long finishMicros) { span.finish(finishMicros); } @Override public Span log(long timestampMicroseconds, String event) { return span.log(timestampMicroseconds, event); } @Override public void finish() { span.finish(); } @Override public SpanContext context() { return span.context(); } @Override public Span setTag(String key, String value) { return span.setTag(key, value); } @Override public Span setTag(String key, boolean value) { return span.setTag(key, value); } @Override public Span setTag(String key, Number value) { return span.setTag(key, value); } @Override public Span log(Map fields) { return span.log(fields); } @Override public Span log(String event) { return span.log(event); } @Override public Span setBaggageItem(String key, String value) { return span.setBaggageItem(key, value); } @Override public String getBaggageItem(String key) { return span.getBaggageItem(key); } @Deprecated @Override public Span log(String eventName, Object payload) { return span.log(eventName, payload); } @Deprecated @Override public Span log(long timestampMicroseconds, String eventName, Object payload) { return span.log(timestampMicroseconds, eventName, payload); } public String toTraceId() { return traceId; } public String toSpanId() { return spanId; } private String createTraceId() { try { Object span = StrategyTracerContext.getCurrentContext().getSpan(); if (span != null) { // 该方式适用在WebFlux模式下 StrategySpan strategySpan = (StrategySpan) span; return strategySpan.getTraceId(); } else { // 该方式适用在WebMvc模式下 return TraceContext.traceId(); } } catch (Exception e) { return null; } } private String createSpanId() { try { return DiscoveryConstant.IGNORED; } catch (Exception e) { return null; } } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy