Optimize default settings of trace id

This commit is contained in:
hongqiaowei
2021-09-26 20:26:03 +08:00
parent 42e478b265
commit d41bcb2e97
3 changed files with 21 additions and 12 deletions

View File

@@ -105,4 +105,9 @@ refresh-local-cache:
fizz: fizz:
aggregate: aggregate:
writeMapNullValue: false writeMapNullValue: false
fizz-trace-id:
header: X-Trace-Id # default
value-strategy: requestId # default, or can be uuid
value-prefix: fizz # default

View File

@@ -72,10 +72,10 @@ public class SystemConfig {
@Value("${fizz-trace-id.header:X-Trace-Id}") @Value("${fizz-trace-id.header:X-Trace-Id}")
private String fizzTraceIdHeader; private String fizzTraceIdHeader;
@Value("${fizz-trace-id.value-strategy:}") @Value("${fizz-trace-id.value-strategy:requestId}")
private String fizzTraceIdValueStrategy; private String fizzTraceIdValueStrategy;
@Value("${fizz-trace-id.value-prefix:}") @Value("${fizz-trace-id.value-prefix:fizz}")
private String fizzTraceIdValuePrefix; private String fizzTraceIdValuePrefix;
public String fizzTraceIdHeader() { public String fizzTraceIdHeader() {

View File

@@ -59,13 +59,15 @@ public class FlowControlFilter extends FizzWebFilter {
private static final Logger log = LoggerFactory.getLogger(FlowControlFilter.class); private static final Logger log = LoggerFactory.getLogger(FlowControlFilter.class);
private static final String admin = "admin"; private static final String admin = "admin";
private static final String actuator = "actuator"; private static final String actuator = "actuator";
private static final String uuid = "uuid"; private static final String uuid = "uuid";
public static final String ADMIN_REQUEST = "$a"; private static final String defaultFizzTraceIdValueStrategy = "requestId";
public static final String ADMIN_REQUEST = "$a";
@Resource @Resource
private FlowControlFilterProperties flowControlFilterProperties; private FlowControlFilterProperties flowControlFilterProperties;
@@ -166,16 +168,18 @@ public class FlowControlFilter extends FizzWebFilter {
private void setTraceId(ServerWebExchange exchange) { private void setTraceId(ServerWebExchange exchange) {
String traceId = exchange.getRequest().getHeaders().getFirst(systemConfig.fizzTraceIdHeader()); String traceId = exchange.getRequest().getHeaders().getFirst(systemConfig.fizzTraceIdHeader());
if (StringUtils.isBlank(traceId)) { if (StringUtils.isBlank(traceId)) {
if (StringUtils.isBlank(systemConfig.fizzTraceIdValueStrategy())) { String fizzTraceIdValueStrategy = systemConfig.fizzTraceIdValueStrategy();
if (fizzTraceIdValueStrategy.equals(defaultFizzTraceIdValueStrategy)) {
traceId = exchange.getRequest().getId(); traceId = exchange.getRequest().getId();
} else if (systemConfig.fizzTraceIdValueStrategy().equals(uuid)) { } else if (fizzTraceIdValueStrategy.equals(uuid)) {
traceId = UUIDUtil.getUUID(); traceId = UUIDUtil.getUUID();
} else { } else {
throw Utils.runtimeExceptionWithoutStack("unsupported " + systemConfig.fizzTraceIdValueStrategy() + " trace id value strategy!"); throw Utils.runtimeExceptionWithoutStack("unsupported " + fizzTraceIdValueStrategy + " trace id value strategy!");
} }
} }
if (StringUtils.isNotBlank(systemConfig.fizzTraceIdValuePrefix())) { String fizzTraceIdValuePrefix = systemConfig.fizzTraceIdValuePrefix();
traceId = systemConfig.fizzTraceIdValuePrefix() + traceId; if (StringUtils.isNotBlank(fizzTraceIdValuePrefix)) {
traceId = fizzTraceIdValuePrefix + Constants.Symbol.DASH + traceId;
} }
exchange.getAttributes().put(WebUtils.TRACE_ID, traceId); exchange.getAttributes().put(WebUtils.TRACE_ID, traceId);
} }