Служба отдыха после звонков не работает с Spring Webclient - PullRequest
0 голосов
/ 31 марта 2020

Мне нужно вызвать службу отдыха асинхронно, и я подумал об использовании веб-клиента Spring реактивной системы вместо AsyncRestTemplate. Однако мой URL вообще не вызывается с помощью приведенного ниже кода.

Mono<Test> asyncResponse = webClientBuilder.build().post().uri(url).contentType(MediaType.APPLICATION_JSON)
                .header("h1", h1).header("h2", h2)
                .body(BodyInserters.fromObject(request))
                .retrieve().bodyToMono(Test.class);

Однако, если я делаю то же самое синхронно, все работает нормально.

webClientBuilder.build().post().uri(url).contentType(MediaType.APPLICATION_JSON)
                .header("h1", h1).header("h2", h2)
                .body(BodyInserters.fromObject(request))
                .exchange();`

Что я делаю не так?

1 Ответ

0 голосов
/ 31 марта 2020

exchange не означает синхронный. Он отвечает Mono. Вам нужно subscribe() или block() вашего потока где-то.

Разница с exchange и retrieve заключается в следующем: они отличаются типами возврата; метод exchange обеспечивает ClientResponse вместе с его статусом, заголовками, в то время как метод получения является кратчайшим путем для непосредственного извлечения тела. Вы можете сослаться это

...