MINA 2処理転送の解決策
885 ワード
シーン:サービス側は2つのSOCKETサービスを開き、それぞれ2つのクライアントに対応し、それぞれクライアントA、クライアントBがないと仮定する.クライアントAは短い接続であり、メッセージを送信してフィードバックを得て終了し、クライアントBはサービス側にログインした後も長い接続を維持する.需要は:Aはメッセージを送った後に、業務の処理を行って、それから処理の結果をクライアントBに送ります.
現在、グローバルなConcurrentHashMapを構築し、クライアントBの長い接続のIoSessionをConcurrentHashMapに入れ、クライアントAの処理が完了した後、ConcurrentHashMapのIoSessionを見つけ、write(msg)メソッドを呼び出すことを検討している.
現在、グローバルなConcurrentHashMapを構築し、クライアントBの長い接続のIoSessionをConcurrentHashMapに入れ、クライアントAの処理が完了した後、ConcurrentHashMapのIoSessionを見つけ、write(msg)メソッドを呼び出すことを検討している.
//sessionCurHashMap , ConcurrentHashMap
IoSession sendSession = (IoSession) sessionCurHashMap.get("key");
WriteFuture future = sendSession.write(" "); //
future.awaitUninterruptibly(); //
if(future.isWritten())
{
//
System.out.println(" ");
}
else
{
//
System.out.println(" ");
}