diff --git a/joylive-core/joylive-governance-api/src/main/java/com/jd/live/agent/governance/context/RequestContext.java b/joylive-core/joylive-governance-api/src/main/java/com/jd/live/agent/governance/context/RequestContext.java index 9f790adc..dab89791 100644 --- a/joylive-core/joylive-governance-api/src/main/java/com/jd/live/agent/governance/context/RequestContext.java +++ b/joylive-core/joylive-governance-api/src/main/java/com/jd/live/agent/governance/context/RequestContext.java @@ -107,10 +107,10 @@ public static void remove() { * * @param consumer The {@link Consumer} to process each {@link Cargo} contained in the {@link Carrier}. */ - public static void traverse(Consumer consumer) { + public static void cargos(Consumer consumer) { Carrier carrier = CARRIER.get(); if (carrier != null) { - carrier.traverse(consumer); + carrier.cargos(consumer); } } @@ -119,10 +119,10 @@ public static void traverse(Consumer consumer) { * * @param consumer The {@link BiConsumer} to process each key-value pair contained in the {@link Carrier}. */ - public static void traverse(BiConsumer consumer) { + public static void cargos(BiConsumer consumer) { Carrier carrier = CARRIER.get(); if (carrier != null) { - carrier.traverse(consumer); + carrier.cargos(consumer); } } @@ -137,6 +137,16 @@ public static Cargo getCargo(String key) { return carrier == null ? null : carrier.getCargo(key); } + /** + * Checks if the current {@link Carrier} instance contains any {@link Cargo}. + * + * @return {@code true} if the current {@link Carrier} contains {@link Cargo}, {@code false} otherwise. + */ + public static boolean hasCargo() { + Carrier carrier = CARRIER.get(); + return carrier != null && carrier.getCargos() != null && !carrier.getCargos().isEmpty(); + } + /** * Retrieves a specific attribute by key from the current {@link Carrier} instance. * @@ -162,13 +172,15 @@ public static T removeAttribute(String key) { } /** - * Checks if the current {@link Carrier} instance contains any {@link Cargo}. + * Sets or replaces an attribute with the specified key and value. * - * @return {@code true} if the current {@link Carrier} contains {@link Cargo}, {@code false} otherwise. + * @param key The key of the attribute. + * @param value The value of the attribute. */ - public static boolean hasCargo() { - Carrier carrier = CARRIER.get(); - return carrier != null && carrier.getCargos() != null && !carrier.getCargos().isEmpty(); + public static void setAttribute(String key, Object value) { + if (key != null && value != null) { + getOrCreate().setAttribute(key, value); + } } /** diff --git a/joylive-core/joylive-governance-api/src/main/java/com/jd/live/agent/governance/context/bag/Carrier.java b/joylive-core/joylive-governance-api/src/main/java/com/jd/live/agent/governance/context/bag/Carrier.java index 658d2be3..e81f3b91 100644 --- a/joylive-core/joylive-governance-api/src/main/java/com/jd/live/agent/governance/context/bag/Carrier.java +++ b/joylive-core/joylive-governance-api/src/main/java/com/jd/live/agent/governance/context/bag/Carrier.java @@ -214,7 +214,7 @@ default void addCargo(CargoRequire require, Iterable targets, Function consumer) { + default void cargos(Consumer consumer) { if (consumer != null) { Collection cargos = getCargos(); if (cargos != null) { @@ -228,7 +228,7 @@ default void traverse(Consumer consumer) { * * @param consumer A bi-consumer to process each key-value pair. */ - default void traverse(BiConsumer consumer) { + default void cargos(BiConsumer consumer) { if (consumer != null) { Collection cargos = getCargos(); if (cargos != null) { diff --git a/joylive-plugin/joylive-router/joylive-router-sofarpc/src/main/java/com/jd/live/agent/plugin/router/sofarpc/request/SofaRpcRequest.java b/joylive-plugin/joylive-router/joylive-router-sofarpc/src/main/java/com/jd/live/agent/plugin/router/sofarpc/request/SofaRpcRequest.java index ad158078..bd4fcd64 100644 --- a/joylive-plugin/joylive-router/joylive-router-sofarpc/src/main/java/com/jd/live/agent/plugin/router/sofarpc/request/SofaRpcRequest.java +++ b/joylive-plugin/joylive-router/joylive-router-sofarpc/src/main/java/com/jd/live/agent/plugin/router/sofarpc/request/SofaRpcRequest.java @@ -15,7 +15,12 @@ */ package com.jd.live.agent.plugin.router.sofarpc.request; +import com.alipay.sofa.rpc.client.ProviderHelper; +import com.alipay.sofa.rpc.client.ProviderInfo; +import com.alipay.sofa.rpc.common.RpcConstants; +import com.alipay.sofa.rpc.context.RpcInternalContext; import com.alipay.sofa.rpc.core.request.SofaRequest; +import com.jd.live.agent.core.util.cache.LazyObject; import com.jd.live.agent.governance.request.AbstractRpcRequest.AbstractRpcInboundRequest; import com.jd.live.agent.governance.request.AbstractRpcRequest.AbstractRpcOutboundRequest; @@ -26,8 +31,32 @@ */ public interface SofaRpcRequest { + /** + * Represents an inbound RPC request for the SOFA framework, encapsulating the necessary + * details for processing the request on the server side. + *

+ * This class extends {@link AbstractRpcInboundRequest} with a specific focus on SOFA RPC requests, + * providing a structure to handle incoming service method invocations. It captures essential + * details such as the service interface name, method name, arguments, and any additional + * properties attached with the request. This information facilitates the execution of the + * corresponding service method on the server. + *

+ * + * @see AbstractRpcInboundRequest for the base class functionality. + */ class SofaRpcInboundRequest extends AbstractRpcInboundRequest implements SofaRpcRequest { + /** + * Constructs a new {@code SofaRpcInboundRequest} with the specified SOFA request details. + *

+ * Initializes the request with comprehensive details about the service method to be executed, + * including the service interface name, the unique name of the target service, the method name, + * method arguments, and any additional properties (attachments) that may accompany the request. + * This constructor parses the unique service name to extract the service group if specified. + *

+ * + * @param request the {@link SofaRequest} containing the details of the service method invocation. + */ public SofaRpcInboundRequest(SofaRequest request) { super(request); this.service = request.getInterfaceName(); @@ -40,8 +69,39 @@ public SofaRpcInboundRequest(SofaRequest request) { } } + /** + * Represents an outbound RPC request specifically designed for the SOFA framework. + *

+ * This class encapsulates the details required to execute a remote procedure call using the SOFA framework, + * including service identification, method invocation details, and any additional attachments that may be necessary + * for the call. It extends the generic {@link AbstractRpcOutboundRequest} class, providing SOFA-specific + * implementation details. + *

+ * + * @see AbstractRpcOutboundRequest for more information on the base class functionality. + */ class SofaRpcOutboundRequest extends AbstractRpcOutboundRequest implements SofaRpcRequest { + /** + * Lazily initialized identifier used for sticky connections, typically based on the target service's IP and port. + *

+ * This ID is determined by inspecting the current RPC context for a specific attachment that indicates the target + * service's location. If present, this information is used to construct a unique identifier for the request, which + * can be used to optimize connection reuse. + *

+ */ + private final LazyObject stickyId = new LazyObject<>(SofaRpcOutboundRequest::getStickyIdFromContext); + + /** + * Constructs a new {@code SofaRpcOutboundRequest} with the specified SOFA request details. + *

+ * This constructor initializes the request with comprehensive details about the service method to be invoked, + * including the service interface name, method name, method arguments, and any additional properties attached + * to the request. + *

+ * + * @param request the {@link SofaRequest} containing the details of the SOFA service method to be invoked. + */ public SofaRpcOutboundRequest(SofaRequest request) { super(request); this.service = request.getInterfaceName(); @@ -52,5 +112,32 @@ public SofaRpcOutboundRequest(SofaRequest request) { this.arguments = request.getMethodArgs(); this.attachments = request.getRequestProps(); } + + @Override + public String getStickyId() { + return stickyId.get(); + } + + /** + * Attempts to extract a sticky ID from the current RPC context. + *

+ * This method inspects the current {@link RpcInternalContext} for an attachment indicating the target + * service's IP and port. If found, it constructs and returns a unique identifier based on this information. + *

+ * + * @return a unique identifier for the target service, or {@code null} if it cannot be determined. + */ + private static String getStickyIdFromContext() { + RpcInternalContext context = RpcInternalContext.peekContext(); + String targetIP = (String) context.getAttachment(RpcConstants.HIDDEN_KEY_PINPOINT); + if (targetIP != null && !targetIP.isEmpty()) { + try { + ProviderInfo providerInfo = ProviderHelper.toProviderInfo(targetIP); + return providerInfo.getHost() + ":" + providerInfo.getPort(); + } catch (Throwable ignore) { + } + } + return null; + } } } diff --git a/joylive-plugin/joylive-transmission/joylive-transmission-dubbo2.6/src/main/java/com/jd/live/agent/plugin/transmission/dubbo/v2_6/interceptor/DubboConsumerInterceptor.java b/joylive-plugin/joylive-transmission/joylive-transmission-dubbo2.6/src/main/java/com/jd/live/agent/plugin/transmission/dubbo/v2_6/interceptor/DubboConsumerInterceptor.java index 34165a77..c9ff7b35 100644 --- a/joylive-plugin/joylive-transmission/joylive-transmission-dubbo2.6/src/main/java/com/jd/live/agent/plugin/transmission/dubbo/v2_6/interceptor/DubboConsumerInterceptor.java +++ b/joylive-plugin/joylive-transmission/joylive-transmission-dubbo2.6/src/main/java/com/jd/live/agent/plugin/transmission/dubbo/v2_6/interceptor/DubboConsumerInterceptor.java @@ -42,7 +42,7 @@ public void onEnter(ExecutableContext ctx) { private void attachTag(RpcInvocation invocation) { Carrier carrier = RequestContext.getOrCreate(); - carrier.traverse(tag -> invocation.setAttachment(tag.getKey(), tag.getValue())); + carrier.cargos(tag -> invocation.setAttachment(tag.getKey(), tag.getValue())); carrier.addCargo(require, RpcContext.getContext().getAttachments(), Label::parseValue); } diff --git a/joylive-plugin/joylive-transmission/joylive-transmission-dubbo2.7/src/main/java/com/jd/live/agent/plugin/transmission/dubbo/v2_7/interceptor/DubboConsumerInterceptor.java b/joylive-plugin/joylive-transmission/joylive-transmission-dubbo2.7/src/main/java/com/jd/live/agent/plugin/transmission/dubbo/v2_7/interceptor/DubboConsumerInterceptor.java index 6be33639..b4c99abb 100644 --- a/joylive-plugin/joylive-transmission/joylive-transmission-dubbo2.7/src/main/java/com/jd/live/agent/plugin/transmission/dubbo/v2_7/interceptor/DubboConsumerInterceptor.java +++ b/joylive-plugin/joylive-transmission/joylive-transmission-dubbo2.7/src/main/java/com/jd/live/agent/plugin/transmission/dubbo/v2_7/interceptor/DubboConsumerInterceptor.java @@ -42,7 +42,7 @@ public void onEnter(ExecutableContext ctx) { private void attachTag(RpcInvocation invocation) { Carrier carrier = RequestContext.getOrCreate(); - carrier.traverse(tag -> invocation.setAttachment(tag.getKey(), tag.getValue())); + carrier.cargos(tag -> invocation.setAttachment(tag.getKey(), tag.getValue())); carrier.addCargo(require, RpcContext.getContext().getObjectAttachments(), Label::parseValue); } diff --git a/joylive-plugin/joylive-transmission/joylive-transmission-dubbo3/src/main/java/com/jd/live/agent/plugin/transmission/dubbo/v3/interceptor/DubboConsumerInterceptor.java b/joylive-plugin/joylive-transmission/joylive-transmission-dubbo3/src/main/java/com/jd/live/agent/plugin/transmission/dubbo/v3/interceptor/DubboConsumerInterceptor.java index bb00e94c..037376fc 100644 --- a/joylive-plugin/joylive-transmission/joylive-transmission-dubbo3/src/main/java/com/jd/live/agent/plugin/transmission/dubbo/v3/interceptor/DubboConsumerInterceptor.java +++ b/joylive-plugin/joylive-transmission/joylive-transmission-dubbo3/src/main/java/com/jd/live/agent/plugin/transmission/dubbo/v3/interceptor/DubboConsumerInterceptor.java @@ -42,7 +42,7 @@ public void onEnter(ExecutableContext ctx) { private void attachTag(RpcInvocation invocation) { Carrier carrier = RequestContext.getOrCreate(); - carrier.traverse(tag -> invocation.setAttachment(tag.getKey(), tag.getValue())); + carrier.cargos(tag -> invocation.setAttachment(tag.getKey(), tag.getValue())); carrier.addCargo(require, RpcContext.getClientAttachment().getObjectAttachments(), Label::parseValue); } diff --git a/joylive-plugin/joylive-transmission/joylive-transmission-grpc/src/main/java/com/jd/live/agent/plugin/transmission/grpc/interceptor/ClientCallImplInterceptor.java b/joylive-plugin/joylive-transmission/joylive-transmission-grpc/src/main/java/com/jd/live/agent/plugin/transmission/grpc/interceptor/ClientCallImplInterceptor.java index b7c05d9f..24f69bb4 100644 --- a/joylive-plugin/joylive-transmission/joylive-transmission-grpc/src/main/java/com/jd/live/agent/plugin/transmission/grpc/interceptor/ClientCallImplInterceptor.java +++ b/joylive-plugin/joylive-transmission/joylive-transmission-grpc/src/main/java/com/jd/live/agent/plugin/transmission/grpc/interceptor/ClientCallImplInterceptor.java @@ -28,7 +28,7 @@ public void onEnter(ExecutableContext ctx) { } private void attachTag(Metadata metadata) { - RequestContext.traverse(tag -> metadata.put(Metadata.Key.of(tag.getKey(), Metadata.ASCII_STRING_MARSHALLER), tag.getValue())); + RequestContext.cargos(tag -> metadata.put(Metadata.Key.of(tag.getKey(), Metadata.ASCII_STRING_MARSHALLER), tag.getValue())); } } diff --git a/joylive-plugin/joylive-transmission/joylive-transmission-httpclient3/src/main/java/com/jd/live/agent/plugin/transmission/httpclient/v3/interceptor/HttpClientInterceptor.java b/joylive-plugin/joylive-transmission/joylive-transmission-httpclient3/src/main/java/com/jd/live/agent/plugin/transmission/httpclient/v3/interceptor/HttpClientInterceptor.java index 9fadae82..211faef4 100644 --- a/joylive-plugin/joylive-transmission/joylive-transmission-httpclient3/src/main/java/com/jd/live/agent/plugin/transmission/httpclient/v3/interceptor/HttpClientInterceptor.java +++ b/joylive-plugin/joylive-transmission/joylive-transmission-httpclient3/src/main/java/com/jd/live/agent/plugin/transmission/httpclient/v3/interceptor/HttpClientInterceptor.java @@ -28,6 +28,6 @@ public void onEnter(ExecutableContext ctx) { } private void attachTag(HttpMethod method) { - RequestContext.traverse(tag -> method.setRequestHeader(tag.getKey(), tag.getValue())); + RequestContext.cargos(tag -> method.setRequestHeader(tag.getKey(), tag.getValue())); } } diff --git a/joylive-plugin/joylive-transmission/joylive-transmission-httpclient4/src/main/java/com/jd/live/agent/plugin/transmission/httpclient/v4/interceptor/HttpClientInterceptor.java b/joylive-plugin/joylive-transmission/joylive-transmission-httpclient4/src/main/java/com/jd/live/agent/plugin/transmission/httpclient/v4/interceptor/HttpClientInterceptor.java index e1a1ad9a..1357001e 100644 --- a/joylive-plugin/joylive-transmission/joylive-transmission-httpclient4/src/main/java/com/jd/live/agent/plugin/transmission/httpclient/v4/interceptor/HttpClientInterceptor.java +++ b/joylive-plugin/joylive-transmission/joylive-transmission-httpclient4/src/main/java/com/jd/live/agent/plugin/transmission/httpclient/v4/interceptor/HttpClientInterceptor.java @@ -34,10 +34,10 @@ public void onEnter(ExecutableContext ctx) { } private void attachTag(HttpRequestBase request) { - RequestContext.traverse((k, v) -> request.addHeader(k, v)); + RequestContext.cargos((k, v) -> request.addHeader(k, v)); } private void attachTag(HttpRequest request) { - RequestContext.traverse((k, v) -> request.addHeader(k, v)); + RequestContext.cargos((k, v) -> request.addHeader(k, v)); } } diff --git a/joylive-plugin/joylive-transmission/joylive-transmission-jdkhttp/src/main/java/com/jd/live/agent/plugin/transmission/jdkhttp/interceptor/JavaHttpClientInterceptor.java b/joylive-plugin/joylive-transmission/joylive-transmission-jdkhttp/src/main/java/com/jd/live/agent/plugin/transmission/jdkhttp/interceptor/JavaHttpClientInterceptor.java index 5ab1ce1e..32cdd849 100644 --- a/joylive-plugin/joylive-transmission/joylive-transmission-jdkhttp/src/main/java/com/jd/live/agent/plugin/transmission/jdkhttp/interceptor/JavaHttpClientInterceptor.java +++ b/joylive-plugin/joylive-transmission/joylive-transmission-jdkhttp/src/main/java/com/jd/live/agent/plugin/transmission/jdkhttp/interceptor/JavaHttpClientInterceptor.java @@ -71,7 +71,7 @@ public void onEnter(ExecutableContext ctx) { * @param header The HTTP request header object to which the tags will be attached. */ private void attachTag(Object header) { - RequestContext.traverse((key, value) -> addHeader(header, key, value)); + RequestContext.cargos((key, value) -> addHeader(header, key, value)); } /** diff --git a/joylive-plugin/joylive-transmission/joylive-transmission-jdkhttp/src/main/java/com/jd/live/agent/plugin/transmission/jdkhttp/interceptor/SunHttpClientInterceptor.java b/joylive-plugin/joylive-transmission/joylive-transmission-jdkhttp/src/main/java/com/jd/live/agent/plugin/transmission/jdkhttp/interceptor/SunHttpClientInterceptor.java index b1020faa..801d759c 100644 --- a/joylive-plugin/joylive-transmission/joylive-transmission-jdkhttp/src/main/java/com/jd/live/agent/plugin/transmission/jdkhttp/interceptor/SunHttpClientInterceptor.java +++ b/joylive-plugin/joylive-transmission/joylive-transmission-jdkhttp/src/main/java/com/jd/live/agent/plugin/transmission/jdkhttp/interceptor/SunHttpClientInterceptor.java @@ -43,7 +43,7 @@ public void onEnter(ExecutableContext ctx) { * @param header The {@link MessageHeader} to which the tag will be attached. */ private void attachTag(MessageHeader header) { - RequestContext.traverse(header::add); + RequestContext.cargos(header::add); } } diff --git a/joylive-plugin/joylive-transmission/joylive-transmission-kafka/src/main/java/com/jd/live/agent/plugin/transmission/kafka/interceptor/KafkaProducerInterceptor.java b/joylive-plugin/joylive-transmission/joylive-transmission-kafka/src/main/java/com/jd/live/agent/plugin/transmission/kafka/interceptor/KafkaProducerInterceptor.java index 41c671b5..f6a437be 100644 --- a/joylive-plugin/joylive-transmission/joylive-transmission-kafka/src/main/java/com/jd/live/agent/plugin/transmission/kafka/interceptor/KafkaProducerInterceptor.java +++ b/joylive-plugin/joylive-transmission/joylive-transmission-kafka/src/main/java/com/jd/live/agent/plugin/transmission/kafka/interceptor/KafkaProducerInterceptor.java @@ -34,6 +34,6 @@ public void onEnter(ExecutableContext ctx) { private void attachTag(ProducerRecord record) { Headers headers = record.headers(); - RequestContext.traverse((k, v) -> headers.add(k, v == null ? null : k.getBytes(StandardCharsets.UTF_8))); + RequestContext.cargos((k, v) -> headers.add(k, v == null ? null : k.getBytes(StandardCharsets.UTF_8))); } } diff --git a/joylive-plugin/joylive-transmission/joylive-transmission-nettyhttp1/src/main/java/com/jd/live/agent/plugin/transimission/nettyhttp/v1/interceptor/NettyHttpClientInterceptor.java b/joylive-plugin/joylive-transmission/joylive-transmission-nettyhttp1/src/main/java/com/jd/live/agent/plugin/transimission/nettyhttp/v1/interceptor/NettyHttpClientInterceptor.java index 9ab028b0..1f80b79f 100644 --- a/joylive-plugin/joylive-transmission/joylive-transmission-nettyhttp1/src/main/java/com/jd/live/agent/plugin/transimission/nettyhttp/v1/interceptor/NettyHttpClientInterceptor.java +++ b/joylive-plugin/joylive-transmission/joylive-transmission-nettyhttp1/src/main/java/com/jd/live/agent/plugin/transimission/nettyhttp/v1/interceptor/NettyHttpClientInterceptor.java @@ -43,7 +43,7 @@ public void onSuccess(ExecutableContext ctx) { private HttpClient attachTag(HttpClient httpClient) { if (RequestContext.hasCargo()) { - return httpClient.headers((headers) -> RequestContext.traverse(tag -> headers.set(tag.getKey(), tag.getValue()))); + return httpClient.headers((headers) -> RequestContext.cargos(tag -> headers.set(tag.getKey(), tag.getValue()))); } return null; } diff --git a/joylive-plugin/joylive-transmission/joylive-transmission-okhttp1/src/main/java/com/jd/live/agent/plugin/transmission/okhttp/v1/interceptor/OkHttpClientInterceptor.java b/joylive-plugin/joylive-transmission/joylive-transmission-okhttp1/src/main/java/com/jd/live/agent/plugin/transmission/okhttp/v1/interceptor/OkHttpClientInterceptor.java index 769c28da..238e5b36 100644 --- a/joylive-plugin/joylive-transmission/joylive-transmission-okhttp1/src/main/java/com/jd/live/agent/plugin/transmission/okhttp/v1/interceptor/OkHttpClientInterceptor.java +++ b/joylive-plugin/joylive-transmission/joylive-transmission-okhttp1/src/main/java/com/jd/live/agent/plugin/transmission/okhttp/v1/interceptor/OkHttpClientInterceptor.java @@ -34,7 +34,7 @@ public void onEnter(ExecutableContext ctx) { } private void attachTag(Builder builder) { - RequestContext.traverse(builder::addHeader); + RequestContext.cargos(builder::addHeader); } @Override diff --git a/joylive-plugin/joylive-transmission/joylive-transmission-okhttp3/src/main/java/com/jd/live/agent/plugin/transmission/okhttp/v3/interceptor/OkHttpClientInterceptor.java b/joylive-plugin/joylive-transmission/joylive-transmission-okhttp3/src/main/java/com/jd/live/agent/plugin/transmission/okhttp/v3/interceptor/OkHttpClientInterceptor.java index 1e49383d..79fb4f53 100644 --- a/joylive-plugin/joylive-transmission/joylive-transmission-okhttp3/src/main/java/com/jd/live/agent/plugin/transmission/okhttp/v3/interceptor/OkHttpClientInterceptor.java +++ b/joylive-plugin/joylive-transmission/joylive-transmission-okhttp3/src/main/java/com/jd/live/agent/plugin/transmission/okhttp/v3/interceptor/OkHttpClientInterceptor.java @@ -31,7 +31,7 @@ public void onEnter(ExecutableContext ctx) { } private void attachTag(Request.Builder builder) { - RequestContext.traverse(builder::addHeader); + RequestContext.cargos(builder::addHeader); } } diff --git a/joylive-plugin/joylive-transmission/joylive-transmission-rocketmq4/src/main/java/com/jd/live/agent/plugin/transmission/rocketmq/v4/interceptor/MQClientAPIImplInterceptor.java b/joylive-plugin/joylive-transmission/joylive-transmission-rocketmq4/src/main/java/com/jd/live/agent/plugin/transmission/rocketmq/v4/interceptor/MQClientAPIImplInterceptor.java index 8a3ad0ed..4bd7b114 100644 --- a/joylive-plugin/joylive-transmission/joylive-transmission-rocketmq4/src/main/java/com/jd/live/agent/plugin/transmission/rocketmq/v4/interceptor/MQClientAPIImplInterceptor.java +++ b/joylive-plugin/joylive-transmission/joylive-transmission-rocketmq4/src/main/java/com/jd/live/agent/plugin/transmission/rocketmq/v4/interceptor/MQClientAPIImplInterceptor.java @@ -35,7 +35,7 @@ public void onEnter(ExecutableContext ctx) { private void attachTag(SendMessageRequestHeader header) { String properties = header.getProperties(); StringBuilder builder = new StringBuilder(); - RequestContext.traverse(tag -> append(builder, tag)); + RequestContext.cargos(tag -> append(builder, tag)); if (builder.length() > 0) { if (properties != null && !properties.isEmpty()) { builder.append(properties); diff --git a/joylive-plugin/joylive-transmission/joylive-transmission-rocketmq5/src/main/java/com/jd/live/agent/plugin/transmission/rocketmq/v5/interceptor/MQClientAPIImplInterceptor.java b/joylive-plugin/joylive-transmission/joylive-transmission-rocketmq5/src/main/java/com/jd/live/agent/plugin/transmission/rocketmq/v5/interceptor/MQClientAPIImplInterceptor.java index 7545984d..a9974e97 100644 --- a/joylive-plugin/joylive-transmission/joylive-transmission-rocketmq5/src/main/java/com/jd/live/agent/plugin/transmission/rocketmq/v5/interceptor/MQClientAPIImplInterceptor.java +++ b/joylive-plugin/joylive-transmission/joylive-transmission-rocketmq5/src/main/java/com/jd/live/agent/plugin/transmission/rocketmq/v5/interceptor/MQClientAPIImplInterceptor.java @@ -35,7 +35,7 @@ public void onEnter(ExecutableContext ctx) { private void attachTag(SendMessageRequestHeader header) { String properties = header.getProperties(); StringBuilder builder = new StringBuilder(); - RequestContext.traverse(tag -> append(builder, tag)); + RequestContext.cargos(tag -> append(builder, tag)); if (builder.length() > 0) { if (properties != null && !properties.isEmpty()) { builder.append(properties); diff --git a/joylive-plugin/joylive-transmission/joylive-transmission-sofarpc/src/main/java/com/jd/live/agent/plugin/transmission/sofarpc/interceptor/SofaRpcClientInterceptor.java b/joylive-plugin/joylive-transmission/joylive-transmission-sofarpc/src/main/java/com/jd/live/agent/plugin/transmission/sofarpc/interceptor/SofaRpcClientInterceptor.java index e901194b..adef28d4 100644 --- a/joylive-plugin/joylive-transmission/joylive-transmission-sofarpc/src/main/java/com/jd/live/agent/plugin/transmission/sofarpc/interceptor/SofaRpcClientInterceptor.java +++ b/joylive-plugin/joylive-transmission/joylive-transmission-sofarpc/src/main/java/com/jd/live/agent/plugin/transmission/sofarpc/interceptor/SofaRpcClientInterceptor.java @@ -43,7 +43,7 @@ public void onEnter(ExecutableContext ctx) { private void attachTag(SofaRequest request) { Carrier carrier = RequestContext.getOrCreate(); - carrier.traverse(tag -> request.addRequestProp(tag.getKey(), tag.getValue())); + carrier.cargos(tag -> request.addRequestProp(tag.getKey(), tag.getValue())); if (RpcInvokeContext.isBaggageEnable()) { carrier.addCargo(require, RpcInvokeContext.getContext().getAllRequestBaggage(), Label::parseValue); } diff --git a/joylive-plugin/joylive-transmission/joylive-transmission-springcloud3/src/main/java/com/jd/live/agent/plugin/transmission/springcloud/v3/interceptor/HandshakeWebSocketServiceInterceptor.java b/joylive-plugin/joylive-transmission/joylive-transmission-springcloud3/src/main/java/com/jd/live/agent/plugin/transmission/springcloud/v3/interceptor/HandshakeWebSocketServiceInterceptor.java index 3d9d8a31..7aba7f60 100644 --- a/joylive-plugin/joylive-transmission/joylive-transmission-springcloud3/src/main/java/com/jd/live/agent/plugin/transmission/springcloud/v3/interceptor/HandshakeWebSocketServiceInterceptor.java +++ b/joylive-plugin/joylive-transmission/joylive-transmission-springcloud3/src/main/java/com/jd/live/agent/plugin/transmission/springcloud/v3/interceptor/HandshakeWebSocketServiceInterceptor.java @@ -46,7 +46,7 @@ public void onEnter(ExecutableContext ctx) { } private void attachTag(HttpHeaders headers) { - RequestContext.traverse(tag -> headers.addAll(tag.getKey(), tag.getValues())); + RequestContext.cargos(tag -> headers.addAll(tag.getKey(), tag.getValues())); } diff --git a/joylive-plugin/joylive-transmission/joylive-transmission-springcloud3/src/main/java/com/jd/live/agent/plugin/transmission/springcloud/v3/interceptor/ReactorLoadBalancerInterceptor.java b/joylive-plugin/joylive-transmission/joylive-transmission-springcloud3/src/main/java/com/jd/live/agent/plugin/transmission/springcloud/v3/interceptor/ReactorLoadBalancerInterceptor.java index b019fa54..34bd4837 100644 --- a/joylive-plugin/joylive-transmission/joylive-transmission-springcloud3/src/main/java/com/jd/live/agent/plugin/transmission/springcloud/v3/interceptor/ReactorLoadBalancerInterceptor.java +++ b/joylive-plugin/joylive-transmission/joylive-transmission-springcloud3/src/main/java/com/jd/live/agent/plugin/transmission/springcloud/v3/interceptor/ReactorLoadBalancerInterceptor.java @@ -47,7 +47,7 @@ public void onEnter(ExecutableContext ctx) { } private void attachTag(HttpHeaders headers) { - RequestContext.traverse(tag -> headers.addAll(tag.getKey(), tag.getValues())); + RequestContext.cargos(tag -> headers.addAll(tag.getKey(), tag.getValues())); } diff --git a/joylive-plugin/joylive-transmission/joylive-transmission-springcloud3/src/main/java/com/jd/live/agent/plugin/transmission/springcloud/v3/interceptor/WebHandlerDecoratorInterceptor.java b/joylive-plugin/joylive-transmission/joylive-transmission-springcloud3/src/main/java/com/jd/live/agent/plugin/transmission/springcloud/v3/interceptor/WebHandlerDecoratorInterceptor.java index 8fe121d2..314a2e86 100644 --- a/joylive-plugin/joylive-transmission/joylive-transmission-springcloud3/src/main/java/com/jd/live/agent/plugin/transmission/springcloud/v3/interceptor/WebHandlerDecoratorInterceptor.java +++ b/joylive-plugin/joylive-transmission/joylive-transmission-springcloud3/src/main/java/com/jd/live/agent/plugin/transmission/springcloud/v3/interceptor/WebHandlerDecoratorInterceptor.java @@ -73,7 +73,7 @@ public void onSuccess(ExecutableContext ctx) { ServerWebExchange exchange = (ServerWebExchange) ctx.getArguments()[0]; HttpHeaders headers = exchange.getResponse().getHeaders(); Mono mono = (Mono) mc.getResult(); - mono = mono.doFirst(() -> RequestContext.traverse(tag -> headers.addAll(tag.getKey(), tag.getValues()))); + mono = mono.doFirst(() -> RequestContext.cargos(tag -> headers.addAll(tag.getKey(), tag.getValues()))); mc.setResult(mono); } }