Я хотел бы знать, использует ли Spring WebClient HTTP / 2. Как я могу это определить?
Как определить, использует ли Spring WebClient HTTP / 2?
Ответы (3)
Серверная поддержка HTTP / 2
Начиная с Spring Framework 5.1 (Reactor Netty 0.8), этот сервер также поддерживает HTTP / 2. Развертывания JDK9 + будут поддерживать этот протокол без особых изменений инфраструктуры.
Reactor - это базовый http-клиент, который используется Spring WebClient. Начиная с Spring Framework 5.1 эта поддержка HTTP / 2.
См. Также Spring Framework: поддержка HTTP / 2 для обзор.
HTTP / 2 согласовывается для каждого подключения
Если ваш запрос соединение использует HTTP / 2 или HTTP / 1.1, согласовывается для каждого соединения между клиентом и сервером с использованием ALPN. Сервер представляет, какие версии http он поддерживает, тогда клиент выбирает HTTP / 2, если его поддерживают обе части. Это делается через TLS в рукопожатии, поэтому его нельзя обнаружить без разрыва TLS-соединения.
Spring WebClient по умолчанию использует ReactorClientHttpConnector
(реализация ClientHttpConnector
в Reactor-Netty). И согласно этому wiki Netty http-client уже поддерживает HTTP / 2.
Если вы хотите проверить, использует ли ваш Spring WebClient HTTP / 2, вы можете использовать такие инструменты, как Wireshark для перехвата ваших запросов. и проанализируйте, какой протокол он использует.
Я видел этот ответ в stackoverflow:
response.ipc.netty.channel.ChannelOperationsHandler сделает это за вас. Просто настройте свою систему ведения журнала для этого класса, чтобы он регистрировался на уровне DEBUG.
Где вывод выглядит примерно так:
2017-11-23 12: 52: 04.562 ОТЛАДКА 41449 --- [ctor-http-nio-5] rinchannel.ChannelOperationsHandler: [id: 0x9183d6da, L: /127.0.0.1: 57681 - R: localhost / 127.0.0.1 : 8000] Запись объекта DefaultFullHttpRequest (decodeResult: success, version: HTTP / 1.1, content: UnpooledByteBufAllocator $ InstrumentedUnpooledUnsafeHeapByteBuf (ridx: 0, widx: 0, cap: 0)) GET / api / v1 / watch / namespaces /1.1
Возможно, я ошибаюсь, но разве вам не нужен HTTP / 1.1? Если да, проверьте эту ветку:
как регистрировать вызов Spring 5 WebClient