Spring Cloud Sleuth ExtraFieldPropagation не работает в Spring Cloud Gateway Filter - PullRequest
0 голосов
/ 08 января 2020

У нас есть три модуля Gateway с использованием Spring-Cloud-Gateway, Service1 и Service2. Вызов службы шлюза service1 и вызовы service1. Service1 и Service2 используют пружинный веб-шлюз. В шлюзе есть 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 ,actionID);

Мы также установили свойства слэта, как показано ниже, чтобы они печатались в журналах и передавались следующим сервисам (service1 и service2)

  sleuth: 
    baggage-keys: 
      - X-CUST_TRAN_ID
    log:
      slf4j:
        whitelisted-mdc-keys:
         - X-CUST_TRAN_ID

Проблема, с которой мы сталкиваемся:

Значения X-CUST_TRAN_ID передаются по запросу и ответу и печатаются в журналах service1 и service2, но не в самом шлюзе.

Не печатается либо в журнале GlobalFilter, либо в операторах журнала PreFilter, но печатается в операторах журнала PostFilters. Поскольку CUST_TRAN_ID установлен в фильтре GlobalFilter, он должен быть напечатан в операторах журнала после установки в контекст.

Пожалуйста, помогите лучше настроить поле для распространения, а также печати в операторах журнала.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...