Netty 等待sql i/o完成的正确方法

Netty 等待sql i/o完成的正确方法,netty,Netty,有没有人有一个简单的代码示例来说明netty 3.2.7的功能 应在以下场景中正确处理sql查询: 调用方法将消息传递给服务器messageReceived 方法。MessageReceived方法执行sql查询并获取 结果。调用方法不应继续处理,直到 获取sql查询的结果 特别是,netty等待 要完成的i/o(sql查询)将非常有用。您需要在执行sql查询的处理程序前面添加一个ExecutionHandler。就这样 否则您将阻止您的工作线程Norman感谢您提供的额外信息。我认为这可以解决

有没有人有一个简单的代码示例来说明netty 3.2.7的功能 应在以下场景中正确处理sql查询:

调用方法将消息传递给服务器messageReceived 方法。MessageReceived方法执行sql查询并获取 结果。调用方法不应继续处理,直到 获取sql查询的结果

特别是,netty等待
要完成的i/o(sql查询)将非常有用。

您需要在执行sql查询的处理程序前面添加一个ExecutionHandler。就这样


否则您将阻止您的工作线程

Norman感谢您提供的额外信息。我认为这可以解决这个问题,但它需要添加一个额外的处理程序,而这个处理程序并不是真正需要的,它的添加纯粹是为了确保sql查询已经完成(没有任何功能)

我寻找了一种“更标准”的方法,找到了链接 "http://docs.jboss.org/netty/3.2/api/org/jboss/netty/channel/ChannelFuture.html”他说“提供了各种方法,让您检查I/O操作是否已完成、等待完成以及检索I/O操作的结果。它还允许您添加ChannelFutureListeners,以便在I/O操作完成时收到通知。。。。"

它还说更喜欢addListener(ChannelFutureListener)来wait(),但我不知道如何实现这一点。 如果有人知道如何实现这一点,等待i/OSQL查询的结果完成,这将非常有用

为了解决我使用的sendMessage方法中的问题

lastWriteFuture = connector.write(message);
if (lastWriteFuture != null) {
      lastWriteFuture.awaitUninterruptibly();
}

这是有效的-它等待sql查询完成,然后重新运行到调用方。

感谢您的回复。但是,它没有回答netty如何正确地等待sql结果并将其返回给调用方法的问题。否则,调用方法将在获得sql结果之前继续(它需要结果才能正确进行)。我认为它与其他“处理程序”一样回答了这个问题“在您的处理程序后面,调用sql的处理程序只会在包含sql代码的处理程序完成后执行。因此,我认为这是您想要的,或者我没有理解它吗?请检查:啊,是的,这是有效的。我想您应该在io线程内等待sql完成。在io线程中,您不能调用wait*(),因为它将死锁。”。