Netty HTTP 1.1 Поддержка конвейеров

Мне нужно отправить несколько асинхронных запросов на остальной сервер через одно и то же соединение и выполнить их в порядке FIFO, я думаю, что конвейерная обработка HTTP 1.1 просто идеально подходит для этого.

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

Поддерживается ли конвейерная передача HTTP 1.1 в Netty? Как это будет реализовано?

Пример был бы очень признателен.

Смежный вопрос без ответа: конвейер HTTP 1.1 против мультиплексирования HTTP 2

1 ответ

Поскольку Netty находится ближе к уровню TCP, чем к уровню HTTP, отправка нескольких запросов становится простой, после настройки конвейера просто напишите их.

HttpRequest request1 = new DefaultFullHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.GET, "/");
request1.headers().set(HttpHeaderNames.HOST, host);
request1.headers().set(HttpHeaderNames.CONNECTION, HttpHeaderValues.KEEP_ALIVE);
request1.headers().set(HttpHeaderNames.ACCEPT_ENCODING, HttpHeaderValues.GZIP);

channel.writeAndFlush(request1);

HttpRequest request2 = new DefaultFullHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.GET, "/");
request2.headers().set(HttpHeaderNames.HOST, host);
request2.headers().set(HttpHeaderNames.CONNECTION, HttpHeaderValues.KEEP_ALIVE);
request2.headers().set(HttpHeaderNames.ACCEPT_ENCODING, HttpHeaderValues.GZIP);

channel.writeAndFlush(request2);

А потом внутри тебя channelRead метод, прочитайте их в том же порядке, в котором вы их отправили.

Чтобы правильно управлять очередями для пакетов, вы можете найти решение, подобное этому, где вы в основном сохраняете очередь, чтобы знать правильный обратный вызов для вызова после завершения запроса.

Другие вопросы по тегам