MINA 2処理転送の解決策

885 ワード

シーン:サービス側は2つのSOCKETサービスを開き、それぞれ2つのクライアントに対応し、それぞれクライアントA、クライアントBがないと仮定する.クライアントAは短い接続であり、メッセージを送信してフィードバックを得て終了し、クライアントBはサービス側にログインした後も長い接続を維持する.需要は:Aはメッセージを送った後に、業務の処理を行って、それから処理の結果をクライアントBに送ります.
現在、グローバルな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("      ");
		}