Norman спасибо за дополнительную информацию. Я думаю, что это может решить проблему, но это связано с добавлением дополнительного обработчика, который на самом деле не требуется, и будет добавлен исключительно для обеспечения завершения SQL-запроса (без каких-либо функций).
Я искал «более стандартный» способ и нашел ссылку «http://docs.jboss.org/netty/3.2/api/org/jboss/netty/channel/ChannelFuture.html», в котором говорится: Предоставляются различные методы, позволяющие вам проверить, завершена ли операция ввода-вывода, дождаться завершения и получить результат операции ввода-вывода, а также позволяет добавлять ChannelFutureListeners, чтобы вы могли получать уведомления, когда I/O завершена .... »
Он также говорит, что предпочитает addListener (ChannelFutureListener) ждать(), но я не знаю, как это реализовать. Если кто-нибудь знает, как реализовать это, чтобы дождаться завершения запроса sql-запроса i/o, это было бы очень полезно.
Чтобы решить этот вопрос в методе SendMessage я использовал
lastWriteFuture = connector.write(message);
if (lastWriteFuture != null) {
lastWriteFuture.awaitUninterruptibly();
}
Это работает - он ждет запроса SQL для завершения, а затем Retuns к абоненту.
Спасибо за ответ. Однако он не отвечает на вопрос о , как netty правильно ожидает результат от sql и возвращает его вызывающему методу. В противном случае метод вызова продолжается до того, как он получит результат от sql (и для правильного выполнения результата он должен получить результат). – Ray
Я думаю, что он отвечает на вопрос, поскольку другие «обработчики» за вашим обработчиком, которые вызывают sql, будут выполняться только после завершения кода sql. Поэтому я думаю, что его то, что вы хотите, или я пропустил, поняли? Отъезд: http://docs.jboss.org/netty/3.2/api/org/jboss/netty/handler/execution/ExecutionHandler.html –