Я изучал Netty в течение последних дней, так как я пишу быстрый и жесткий HTTP-сервер, на котором должно быть много запросов, а реализация HTTP-сервера Netty довольно проста и выполняет эту работу.Async Netty HttpServer и HttpClient
Мой следующий шаг является частью обработки запроса, мне нужно запустить HTTP-запрос на внешний веб-сервер. Моя интуиция заключается в том, чтобы реализовать асинхронный клиент, который может отправлять много запросов одновременно, но я немного запутался, так как это правильный подход. Я понимаю, что сервер Netty использует рабочий поток для каждого входящего сообщения, поэтому рабочий поток не будет освобожден, чтобы принимать новые сообщения, пока мой обработчик не завершит свою работу. Вот пробой: даже если у меня есть асинхронный HTTP-клиент в руке, не имеет значения, нужно ли ждать каждого ответа и обрабатывать его с помощью моего обработчика сервера - тот же рабочий поток будет блокироваться все это время. Альтернативой является использование асинхронного характера клиента, быстрое возвращение будущего объекта для освобождения потока и размещение слушателя (что означает, что мне нужно вернуть статус клиента 200 или 202) и проверить мой будущий объект, чтобы указать, когда ответ и я могу нажать его клиенту.
Имеет ли это смысл? Неужели я согласен с моими предположениями? Какова хорошая практика для внедрения такого типа сервера-приемника Netty + внешнего клиента с высокой параллелизмом?
Спасибо,
Спасибо за ответ. С первым вариантом, когда ответ обрабатывается слушателем, какой пул потоков/потоков используется? И, со вторым вариантом, на самом деле я вижу, что могу выбрать линию между «критической/обязательной обработкой», которая блокирует, и другую логику, которую я не хочу блокировать, - которую можно обработать, как показывает пример. Правильно ли я понимаю? – user2413964