サーバーへのInputStreamとOutputStreamがあります。大量のJSONリクエストをネットワーク経由で送信し、このサーバーから一連の応答を返すことができます。これから、リクエストを作成して送信し、レスポンスを取得するgetFoo()
のようなゲッターを提供するラッパーを構築したいと思います。
一度にこの単一のInputStreamとOutputStreamを使用するクライアントが多数いる可能性があることを考えると、これをどのように処理するかはわかりません。これを設計するための良い方法があることを望んでいます。
これが私が考えた1つのオプションです:
Map<RequestType, Response>
_に配置します(requestTypeはgetFoo
、getBar
など)。getFoo()
を呼び出すと、リクエストがOutputStreamに書き込まれ、responseMap.get(RequestType.FOO)
を待機して読み取り、マップ内のそのエントリが削除されます。別のオプション:
getFoo()
を呼び出すと、InputStreamリーダーにコールバックとして登録されます。foo
応答)を解析すると、foo
応答を待機しているすべてのリスナーに通知し、リスナーをクリアします。並行性について考え始めると、これらは両方とも壊れやすいように見えます。これにアプローチするより良い方法はありますか?
サーバーへのInputStreamとOutputStreamがあります。大量のJSONリクエストをネットワーク経由で送信し、このサーバーから一連の応答を返すことができます
サーバーへの複数の接続を開くだけでなく、複数の入出力ストリームを取得できますか?そのシナリオでは、その接続を開いているコンポーネントは、その接続を対象とした応答のみを取得し、それだけを取得すると断言できます。