Для кода, см мой крошечный 4 класс github projectвесна облако Netflix и HystrixObservable -> JsonMappingException
Я использую Spring FeignClients для подключения к услуге отдыха. Это то, что клиент Feign выглядит в своей основной (не асинхронном) форме:
@FeignClient(value="localhost:8080/products", decode404 = true)
public interface ProductClient {
@RequestMapping(value="/{id}")
Product getById(@PathVariable("id") String id);
}
Теперь я хотел сделать это асинхронно, используя Observable. Информация по этому поводу в документах Spring отсутствует, есть только small paragraph, в котором говорится, что вы используете HystrixCommand. Вот и все, никаких объяснений, нет кода sampe.
В другом сообщении в блоге мне сказали вместо этого использовать HystrixObservable. И поэтому я попытался что:
@FeignClient(value="localhost:8080/products", decode404 = true)
public interface ProductClient {
@RequestMapping(value="/{id}")
HystrixObservable<Product> getById(@PathVariable("id") String id);
}
В любом случае, с HystrixCommand или HystrixObservable, он бросает мне ошибку: com.fasterxml.jackson.databind.JsonMappingException: Невозможно построить экземпляр com.netflix.hystrix .HystrixObservable
Я понимаю, почему он дает эту ошибку, так как Spring Boot автоматически прикрепляет декодер к FeignClient для десериализации ответа с помощью Jackson. И тип десериализации ответа в происходит от возвращаемого значения.
Я мог бы попытаться сконфигурировать дешифратор custome или вручную создать клиентов Feign, но этот вид поражает всю цель Spring Boot: он работает автоматически (хотя и с некоторой конфигурацией здесь и там).
И вот мой вопрос: как это должно работать?
Как показано в [документации] (https://github.com/OpenFeign/feign/tree/master/hystrix), вам нужно построить клиентов по-разному (с помощью 'HystrixFeign'). –
Да, можно вручную создать клиентов Feign. Но мой вопрос касается Spring + Feign. Итак, как заставить Spring генерировать подходящих клиентов Fign? Документы Spring позволяют предположить, что это возможно, но некоторые важные детали не учитываются. Кроме того, это [сообщение в блоге] (https://www.voxxed.com/blog/2016/03/netflix-stack-using-spring-boot-part-3-feign/#feignclientwithhystrixobservablewrapper) предлагает именно то, что я делаю. –