サーバー ハンドラー。受信したメッセージごとに、複数の応答があります。ビジネスロジックには、リクエストをキューに入れ、キューから削除し、リクエストを処理して応答することが含まれます。
キューの整合性を維持しながら、リクエストを非同期で処理し、非同期で応答するにはどうすればよいですか?
以下のコードは同期的に動作します。
public class TestHandler extends SimpleChannelHandler {
@Override
public void channelConnected(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception {
// Send greeting for a new connection.
e.getChannel().write(
"Welcome to " + InetAddress.getLocalHost().getHostName() + "!\r\n");
e.getChannel().write("It is " + new Date() + " now.\r\n");
}
@Override
public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) {
String XMLFromClient = (String) e.getMessage() ;
ReadXML2 rx = new ReadXML2();
String response = null;
response = rx.processInput(XMLFromClient);
ChannelFuture future = e.getChannel().write(response);
}
@Override
public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e) {
e.getCause().printStackTrace();
Channel ch = e.getChannel();
ch.close();
}
}