【问题标题】:Resolving a ChannelPromise with a return value in Netty?在 Netty 中用返回值解析 ChannelPromise?
【发布时间】:2018-04-28 19:03:28
【问题描述】:

我的频道有时会出现不频繁且缓慢的操作。当需要该操作时,需要停止通道上的所有处理,直到操作完成并检查返回值。我的想法是异步处理此操作并在此操作未完成时关闭 AUTO_READ。我不想为此操作阻塞 IO 线程。

我最初的想法是让我的服务代码解析 ChannelPromise 并为操作传递一个返回值。但是好像没有办法为 ChannelPromise 设置返回值?

另一个想法是让服务返回一个 CompletableFuture 并让我的处理程序代码使用 thenApply() 注册一个异步回调。然后回调代码会将回调逻辑放在通道的事件循环中以确保线程安全。

是否有首选或内置机制来获取 Netty 异步操作的结果?为什么 ChannelPromise 没有提供设置返回值的方法?

【问题讨论】:

    标签: java netty


    【解决方案1】:

    您可以使用Promise<T>

    您可以通过以下方式创建一个:

    Promise<ReturnType> promise = channel.eventLoop().newPromise<ReturnType>();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-13
      • 1970-01-01
      • 2011-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多