Переадресация заголовков запросов на следующий микросервис с использованием Jaeger в SpringBoot
У меня есть два основных микросервиса Springboot, и я использую Jaeger. Допустим, две службы foo
а также bar
, Я могу отправить User-Agent
Заголовок из сервиса foo в бар, используя свойство Tracing Baggage.
От foo
сервис, я буду звонить bar
использование сервиса localhost:port
по состоянию на сейчас.
Пользователи также отправят x-api-key
Заголовок в запросе. Этот заголовок не пересылается с foo
в bar
оказание услуг.
Это мой фрагмент кода,
public ResponseEntity<String> fooService(@RequestHeader("User-Agent") String userAgent, @RequestHeader(value="x-api-key", required = false) String apikeyHeader) {
try {
/**
* Set baggage
*/
tracer.activeSpan().setBaggageItem("user-agent", userAgent);
if (apikeyHeader != null && !apikeyHeader.isEmpty()) {
tracer.activeSpan().setBaggageItem("x-api-key", apikeyHeader);
}
На логах моих bar
сервис, он получает эти заголовки,uberctx-user-agent
а также uberctx-x-api-key
Я не уверен почему uber-ctx-*
добавлено, я только хочу x-api-key
заголовок для пересылки.
1 ответ
Установка элемента багажа отличается от настройки заголовка HTTP. Вы должны использовать свой HTTP-клиент (не показанный в вашем примере), чтобы установить HTTP-заголовок.
Элементы багажа могут быть или не быть доступны в виде отдельных заголовков HTTP: это детальная реализация базового трассировщика, такого как Jaeger.