Я пытаюсь использовать проект Micronaut, чтобы добавить к нему распределенную трассировку (я знаю, что Micronaut уже поддерживает его, но у меня есть веская причина для этого).Для этого мне нужно передать пользовательские заголовки HTTP, которые содержат сериализованный контекст, который должен передаваться между микросервисами.
Я попытался создать фильтр.Однако фильтр запускается только после возврата метода контроллера, что означает, что контекст теряется к моменту вызова фильтра.
Вот метод, который я хочу применить:
@Get('/pets')
Single<List<Pet>> pets() {
petClient.list()
.onErrorReturnItem(Collections.emptyList())
}
А вот и клиент:
@Client(id = 'pets', path = "/v1/pets")
interface PetClient extends PetOperations < Pet > {
@Override
Single <List<Pet>> byVendor(String name)
@Override
Maybe < Pet > find(String slug)
}
Я также пытался добавить параметр @Header в методы клиента, но когда я это сделал, вызовы перестали работать.