我的ChannelFuture永远不会完成,即使在收到回复后仍然未完成

时间:2017-04-14 09:01:11

标签: netty future

我正在尝试等待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。

源代码ConnectorClient

Connector创建CoapClient对象。请求由该CoapClient对象发送。在sendRequest()内部,mChannel.writeAndFlush(request)返回一个ChannelFuture。

0 个答案:

没有答案