Skip to content

Commit 4d91bf3

Browse files
author
1991wangliang@gmail.com
committed
openfeign 高版本对参数限制处理.
1 parent c067313 commit 4d91bf3

4 files changed

Lines changed: 22 additions & 5 deletions

File tree

txlcn-tracing/src/main/java/com/codingapi/txlcn/tracing/TracingContext.java

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,10 @@
2020
import com.codingapi.txlcn.common.util.Maps;
2121
import com.codingapi.txlcn.common.util.id.RandomUtils;
2222
import lombok.extern.slf4j.Slf4j;
23+
import org.springframework.util.Base64Utils;
2324
import org.springframework.util.StringUtils;
2425

26+
import java.nio.charset.Charset;
2527
import java.util.*;
2628

2729
/**
@@ -62,6 +64,13 @@ public void init(Map<String, String> initFields) {
6264
if (Objects.isNull(fields)) {
6365
this.fields = new HashMap<>();
6466
}
67+
//APP_MAP base64 解码
68+
if(initFields.containsKey(TracingConstants.APP_MAP)){
69+
String appMapVal = initFields.get(TracingConstants.APP_MAP);
70+
if(!appMapVal.startsWith("{")||!appMapVal.contains("{")){
71+
initFields.put(TracingConstants.APP_MAP,baseString2appMap(appMapVal));
72+
}
73+
}
6574
this.fields.putAll(initFields);
6675
}
6776

@@ -91,14 +100,22 @@ public void addApp(String serviceId, String address) {
91100
raiseNonGroupException();
92101
}
93102

94-
public String appMapString() {
103+
public String appMapBase64String() {
95104
if (hasGroup()) {
96-
return this.fields.get(TracingConstants.APP_MAP);
105+
return Base64Utils.encodeToString(this.fields.get(TracingConstants.APP_MAP).getBytes(Charset.forName("utf8")));
97106
}
98107
raiseNonGroupException();
99108
return "";
100109
}
101110

111+
private String baseString2appMap(String base64Str) {
112+
//解码
113+
if(!"".equals(base64Str)){
114+
base64Str = Base64Utils.encodeToString(base64Str.getBytes(Charset.forName("utf8")));
115+
}
116+
return base64Str;
117+
}
118+
102119
public JSONObject appMap() {
103120
if (hasGroup()) {
104121
String appMap = this.fields.get(TracingConstants.APP_MAP);

txlcn-tracing/src/main/java/com/codingapi/txlcn/tracing/dubbo/DubboRequestInterceptor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public class DubboRequestInterceptor implements Filter {
3535
public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
3636
if (TracingContext.tracing().hasGroup()) {
3737
RpcContext.getContext().setAttachment(TracingConstants.HEADER_KEY_GROUP_ID, TracingContext.tracing().groupId());
38-
RpcContext.getContext().setAttachment(TracingConstants.HEADER_KEY_APP_MAP, TracingContext.tracing().appMapString());
38+
RpcContext.getContext().setAttachment(TracingConstants.HEADER_KEY_APP_MAP, TracingContext.tracing().appMapBase64String());
3939
}
4040
return invoker.invoke(invocation);
4141
}

txlcn-tracing/src/main/java/com/codingapi/txlcn/tracing/http/FeignRequestInterceptor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,6 @@ public class FeignRequestInterceptor implements RequestInterceptor {
3838
@Override
3939
public void apply(RequestTemplate requestTemplate) {
4040
requestTemplate.header(TracingConstants.HEADER_KEY_GROUP_ID, TracingContext.tracing().groupId());
41-
requestTemplate.header(TracingConstants.HEADER_KEY_APP_MAP, TracingContext.tracing().appMapString());
41+
requestTemplate.header(TracingConstants.HEADER_KEY_APP_MAP, TracingContext.tracing().appMapBase64String());
4242
}
4343
}

txlcn-tracing/src/main/java/com/codingapi/txlcn/tracing/http/RestTemplateRequestInterceptor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public ClientHttpResponse intercept(
4646
@NonNull HttpRequest httpRequest, @NonNull byte[] bytes,
4747
@NonNull ClientHttpRequestExecution clientHttpRequestExecution) throws IOException {
4848
httpRequest.getHeaders().add(TracingConstants.HEADER_KEY_GROUP_ID, TracingContext.tracing().groupId());
49-
httpRequest.getHeaders().add(TracingConstants.HEADER_KEY_APP_MAP, TracingContext.tracing().appMapString());
49+
httpRequest.getHeaders().add(TracingConstants.HEADER_KEY_APP_MAP, TracingContext.tracing().appMapBase64String());
5050
return clientHttpRequestExecution.execute(httpRequest, bytes);
5151
}
5252
}

0 commit comments

Comments
 (0)