Пул подключений весной WebClient - PullRequest
1 голос
/ 22 апреля 2020

Я хочу использовать Spring WebClient в проекте для использования некоторого внешнего веб-сервиса.

  1. Может ли WebClient объект быть одноэлементным или совместно использоваться всеми потоками (запросами)?
  2. Если мое приложение будет получать миллионы запросов в секунду, тогда мне нужно объединить Объекты WebClient? Если да, я не могу найти какую-либо документацию или примеры.
  3. Внутренне ли mono.block() работает подобно future.get() или latch.await()?

1 Ответ

1 голос
/ 23 апреля 2020

WebClient - это неблокирующая реализация REST-клиента, построенного на Реактивном стеке, поэтому я полагаю, что единственная проблема, на которой вы должны сосредоточиться, - завершить неблокирующий вызов.

  1. Может ли объект WebClient быть одноэлементным или общим для всех потоков (запросов)?

Стандартный способ, который я видел везде, - вводить WebClient в виде бобов. Я не вижу причин делать что-то другое.

@Autowired
WebClient webClient;
Если мое приложение будет получать миллионы запросов в секунду, то нужно ли мне объединять объекты WebClient?

Это много! Это определенно нужно решить с помощью репликации служб, балансировщиков нагрузки, переборок и т. Д. c. С точки зрения самого клиента, посмотрите на следующую производительность реактивного клиента с использованием более новых версий Spring: Тест производительности WebFlux Reactive Programming . Кроме того, это максимальная пропускная способность ожидаемая ?

Внутренне ли mono.block () работает аналогично future.get () или latch.await ()?

Да, так и есть.

...