在 Netty 中使用 return 值解析 ChannelPromise?
Resolving a ChannelPromise with a return value in Netty?
我的频道有时会出现不常见且缓慢的操作。当需要进行此操作时,需要停止通道上的所有处理,直到操作完成并检查到 return 值。我的想法是异步处理这个问题,并在这个操作未完成时关闭 AUTO_READ。我不想为此操作阻塞 IO 线程。
我最初的想法是让我的服务代码解析 ChannelPromise 并为操作传递一个 return 值。但似乎无法为 ChannelPromise?
设置 return 值
另一个想法是让服务 return 成为一个 CompletableFuture 并让我的处理程序代码使用 thenApply() 注册一个异步回调。回调代码随后会将回调逻辑置于通道的事件循环中以确保线程安全。
是否有首选或内置机制来获取 Netty 异步操作的结果?为什么 ChannelPromise 不提供设置 return 值的方法?
你可以只用一个 Promise<T>
来代替它。
您可以通过以下方式创建一个:
Promise<ReturnType> promise = channel.eventLoop().newPromise<ReturnType>();
我的频道有时会出现不常见且缓慢的操作。当需要进行此操作时,需要停止通道上的所有处理,直到操作完成并检查到 return 值。我的想法是异步处理这个问题,并在这个操作未完成时关闭 AUTO_READ。我不想为此操作阻塞 IO 线程。
我最初的想法是让我的服务代码解析 ChannelPromise 并为操作传递一个 return 值。但似乎无法为 ChannelPromise?
设置 return 值另一个想法是让服务 return 成为一个 CompletableFuture 并让我的处理程序代码使用 thenApply() 注册一个异步回调。回调代码随后会将回调逻辑置于通道的事件循环中以确保线程安全。
是否有首选或内置机制来获取 Netty 异步操作的结果?为什么 ChannelPromise 不提供设置 return 值的方法?
你可以只用一个 Promise<T>
来代替它。
您可以通过以下方式创建一个:
Promise<ReturnType> promise = channel.eventLoop().newPromise<ReturnType>();