我正在尝试等待ChannelFuture完成,不关心它是成功还是失败。但那个渠道的未来永远不会完整。我已经收到了我发送请求的服务器的响应。
通过调用此
获取我的未来mChannel.writeAndFlush(req);
然后我等了
while(!channelfuture.isDone())
{
//...sleep
}
这永远不会结束,但我的入站频道已经收到该请求的响应。
我想念什么?我认为未来会在刷新后返回isDone()== true。
编辑: 我认为@Norman可能是对的,但我不知道如何解决这个问题。 我在spring控制器方法中调用channel.writeAndFlush()。但我想等待异步结果。我尝试使用thread.sleep()和future.sync(),两者都没有完成未来。也许是因为春天没有释放线程。所以,我应该派一个新线程来调用channel.writeAndFlush()?
我没有使用弹簧就试过这个。 channel.writeAndFlush()创建一个DefaultChannelPromise(channel(),executor()),executor()的返回对象看起来像EventLoop。 结果是一样的,我的ChannelFutureListener()永远不会被调用。
我使用的是Netty 4.1.1。
Connector创建CoapClient对象。请求由该CoapClient对象发送。在sendRequest()内部,mChannel.writeAndFlush(request)返回一个ChannelFuture。