Я пишу систему обмена сообщениями, используя Netty. Я не могу отправить последующее сообщение до того, как первое сообщение будет успешно отправлено (и иногда жду ответа на отправку от одноранговой конечной точки). Я вижу рекомендации не ждать, пока будущее будет завершено в ChannelHandlerAdapter, так как это поглощает циклы ЦП в EventLoop.
Тогда возникает вопрос: как реализовать эту последовательную логику, не дожидаясь завершения первой отправки в EventLoop ChannelHandlerAdapter, или избежать переключения контекста потока между потоком приложения и потоком цикла событий?
а) Если я подожду, пока ChannelFuture завершится в ChannelHandlerAdapter, он съест циклы процессора. Если я отправлю последующие сообщения в прослушивателе, зарегистрированном в каналеFuture записи, имея логику приложения в прослушивателе, зарегистрированном в ChanelFuture этого канала, это также приведет к пережевыванию циклов процессора в EventLoop.
or,
б) Если я использую канал в потоке приложения и пишу в этот канал, происходит переключение контекста потока с потока приложения на поток канала. Есть ли способ избежать этого переключения контекста потока в этом случае использования?
Есть ли способ лучше?