У меня следующий контроллер
@RestController
public void MyController {
@GetMapping("/foo")
public Flux<Foo> getFoos() { /* return a flux of Foos*/ }
}
И притворный клиент
public interface MyFeignClient {
@RequestLine("GET /foo")
Mono<Foo> getFoos();
}
public class MyClients {
public static MyFeignClient myFeignClient() {
return ReactorFeign.builder().target(MyFeignClient.class, "http://localhost:8080");
}
}
Но когда я звоню
StepVerifier.create(myFeignClient.foo())
.consumeNextWith(foo -> println(foo))
.verifyCompleted();
Я получил эту ошибку
java.lang.AssertionError: ожидание «takeNextWith» не удалось (ожидалось: onNext (); фактическое: onError (feign.FeignException: невозможно десериализовать экземпляр
com.example.Foo
из токена START_ARRAY в [Источник: (BufferedReader); строка: 1, столбец: 1 ] чтение GET http://localhost:8080/foo))Что я здесь сделал не так? Как я могу это исправить?
Простой поиск в Google показывает, что имитирующий клиент не поддерживает реактивность. У них есть инкубационный проект, пытающийся создать поддержку