优化
This commit is contained in:
+19
@@ -0,0 +1,19 @@
|
||||
package com.baiyue.eventbridge.trace;
|
||||
|
||||
import com.baiyue.common.web.CorrelationContext;
|
||||
import com.baiyue.common.web.OutboundTraceHeaders;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.net.http.HttpRequest;
|
||||
|
||||
/** Applies a fresh child span to one raw JDK HttpClient request. */
|
||||
@Component
|
||||
public class EventBridgeHttpTracePropagation {
|
||||
public HttpRequest.Builder apply(HttpRequest.Builder builder) {
|
||||
OutboundTraceHeaders outbound = OutboundTraceHeaders.fromCurrentOrNew();
|
||||
return builder
|
||||
.setHeader(CorrelationContext.REQUEST_ID_HEADER, outbound.requestId())
|
||||
.setHeader(CorrelationContext.TRACE_ID_HEADER, outbound.traceId())
|
||||
.setHeader(CorrelationContext.TRACE_PARENT_HEADER, outbound.traceParent());
|
||||
}
|
||||
}
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
package com.baiyue.eventbridge.trace;
|
||||
|
||||
import com.baiyue.common.web.CorrelationContext;
|
||||
import com.baiyue.common.web.OutboundTraceHeaders;
|
||||
import com.baiyue.eventbridge.domain.BridgeInbox;
|
||||
import org.slf4j.MDC;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/** Establishes one trusted MDC context for an Event Bridge delivery attempt. */
|
||||
public final class EventBridgeTraceScope implements AutoCloseable {
|
||||
private final Map<String, String> previous;
|
||||
|
||||
private EventBridgeTraceScope(Map<String, String> previous) {
|
||||
this.previous = previous;
|
||||
}
|
||||
|
||||
public static EventBridgeTraceScope open(BridgeInbox event) {
|
||||
Map<String, String> previous = MDC.getCopyOfContextMap();
|
||||
OutboundTraceHeaders local = OutboundTraceHeaders.fromTrustedTraceOrNew(event.getTraceId());
|
||||
MDC.put(CorrelationContext.REQUEST_ID, local.requestId());
|
||||
MDC.put(CorrelationContext.TRACE_ID, local.traceId());
|
||||
MDC.put(CorrelationContext.SPAN_ID, local.spanId());
|
||||
return new EventBridgeTraceScope(previous);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() {
|
||||
if (previous == null) {
|
||||
MDC.clear();
|
||||
} else {
|
||||
MDC.setContextMap(previous);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user