У меня нечастая и медленная операция, которая иногда происходит на моих каналах. Когда требуется эта операция, необходимо остановить всю обработку в канале до завершения операции и проверки возвращаемого значения. Я думаю, что обработать это асинхронно и отключить AUTO_READ, пока эта операция не завершена. Я не хочу блокировать поток ввода-вывода для этой операции.
Первоначально я думал, что мой сервисный код разрешит ChannelPromise и передаст возвращаемое значение для операции. Но похоже, что нет способа установить возвращаемое значение для ChannelPromise?
Другая мысль состоит в том, чтобы служба возвращала CompletableFuture и чтобы мой код обработчика регистрировал асинхронный обратный вызов с помощью thenApply (). Затем код обратного вызова помещает логику обратного вызова в цикл событий канала для обеспечения безопасности потока.
Есть ли предпочтительный или встроенный механизм для получения результата асинхронной операции с Netty? Почему ChannelPromise не предоставляет способа установить возвращаемое значение?