私は何年もの間Java開発に生きている伝統的な問題を抱えていますが、それを行うための最良の方法を決定することができませんでした。だから、最高のものを選ぶためにあなたのアドバイスが必要です。問題は以下のようになります-
クライアント-Javaプログラム(基本的にはWebベースのアプリケーション)
サーバー-Cで書かれた
要件-ユーザーは、100万レコード、たとえば50000レコードを含む可能性のあるファイルをアップロードします。各レコード(行)には、シリアルID、製品名、および顧客名があります。私のJavaプログラムはファイルを読み取り、ネットワーク経由でCアプリケーションにリクエストを送信する必要があります。このCサーバーアプリケーションはリクエストIDで応答し、Java(クライアント)ではこのリクエストIDを同期されたリストに保存する必要があり、以前に送信されたリクエストIDのステータスを確認するためにCサーバーアプリケーションにクエリを返す必要があります。また、サーバーは要求IDに対してWIP(進行中の作業)またはDONE(完了)のいずれかで応答します。Cサーバーアプリケーションの応答=DONEの場合、サーバーは応答とともにデータを送信し、WIPの場合、クライアントは5秒間隔で3回再試行する必要があります。
コードデザイン-
ステップ1-ファイルを1行ずつ読み取る
ステップ2-行を読み取った後、サーバーに要求を送信し、同期された配列リストに応答を格納するスレッドを開始します。
ステップ3-別のスレッドが同期リストを読み取り、リクエストステータスのクエリを開始し、Cサーバーアプリからの最終応答を保存します。
これにより、ファイルに100000レコードが含まれているかどうかを確認できるように、メモリオーバーヘッドが発生する可能性があり、100000スレッドが作成される可能性があります。皆さんは私にこれを処理するより良い方法を提案できますか?
ありがとう、シリッシュ。