我们有三个Gateway
使用spring-cloud-gateway
,Service1
和的模块Service2
。网关呼叫service1
和service1
呼叫service2
。Service1
并且Service2
正在使用 spring web Flux Gateway 有 3 个过滤器。全局过滤器、前置过滤器和后置过滤器。
spring:
cloud:
gateway:
default-filters:
- name: GlobalFilter
routes:
id: service1
uri: http://localhost:9091/
predicates:
- Path=/service1/**
filters:
- name: PreFilter
- name: PostFilter
在全局过滤器中,我们从设置为新行李键的请求正文设置中读取值。
ExtraFieldPropagation.set(tracer.currentSpan().context() ,X-CUST_TRAN_ID, transactionID);
我们还设置了如下所示的 Slueth 属性,以便将其打印在日志中并转发到下一个服务(service1
和service2
)
sleuth:
baggage-keys:
- X-CUST_TRAN_ID
log:
slf4j:
whitelisted-mdc-keys:
- X-CUST_TRAN_ID
我们面临的问题是
X-CUST_TRAN_ID
值通过请求和响应发送并打印在service1
andservice2
的日志中,但Gateway
本身不打印。
它不会在GlobalFilter
's 的日志或PreFilter
日志语句中打印,而是在PostFilters
日志语句中打印。由于CUST_TRAN_ID
设置在GlobalFilter
's 过滤器中,它应该在设置为上下文后打印在日志语句中。
请帮助以更好的方式设置传播字段以及在日志语句中打印。