2010-11-30 10 views
1

hereを超えるスレッドに似たような状況に遭遇しています。違いは、Webサービスを使用していないことです。しかし、むしろ私たちはWebアプリケーションを使用しています。私たちは、ユーザーが少なくとも30列の8000レコードをダウンロードできるようにするための要件を持っています。これはjxl経由でExcelファイルに書き込まれます。長期実行同期プロセスにはどのようなJava/Designパターンを使用できますか?

これは私が知らない理由で非同期に実行されていない、長時間実行されるプロセスです。それはまた、500〜800 MBという膨大なメモリフットプリントを持っています。すべてを上にするには、平均2分10秒かかる。

私たちが現在行っていることは、アプリケーションサーバーからjms経由でこの要件をプロセス外に委譲していることです。アプリケーションサーバーはその要求をブローカに送信し、その後、コンシューマがキューからリクエストを取得して処理し、ExcelファイルのURLを返します。

私はJMSについて読んで読んでいて、示唆されている用途のほとんどに非同期要求が含まれているため、ユーザーがメールを送信するなどの長い時間待たずに承認、請求書発行。このthreadには多くの例があり、提案されたユースケースは非同期で行うことができます。だから、現在のソリューションは真のソリューションではなく、ハックのように聞こえる。

このプロセスをさらに改善するために提案するパターンはありますか?

編集:残念ながら、それはビジネス要件のため、機能のものと呼ぶことができますが、残念ながら「同期性」を排除できません。だから私は、パフォーマンスを向上させ、代わりにプロセスのヒープメモリ使用量を減らすことができる答え/調整/トリック/パターンを探しています。

+1

JMS部分プロセス全体を非同期にします。 –

答えて

4

私はこの権利を理解しましたか?

  • ユーザーがリクエストしました。この要求
    • 中にJMSメッセージが
    • Excelファイルを送信されたURLをユーザに送信される JMSメッセージが、その後
    • を返さ
    • を作成しましたか?

もしそうなら、私は同意する、それがJMSのasynchroneous自然のひどい虐待です。

私は何をするだろうことは次のとおりです。

はすぐにあなたの要求が、その後

  • を処理されているのようなテキストで結果ページをユーザに示すいずれかの結果のためにサーバーをポーリングするためにAJAXを使用URLは
  • (おそらくユーザーステータスバーを示す)、または電子メールを介してクライアントにURLを送信
  • 私は「
+0

+1、OPはこれを同期させたくありません。 Webサーバースレッドが1回の要求でアクティブになるには2分以上が長すぎます。 – Qwerky

+0

はい、正しく理解しましたが、これを非同期的に行う代替案を提案できるかどうか疑問に思っていました... – Jeune

+0

プロセスに2分かかる場合、他の何かがひどいです。 30秒以上かかるものはすべて非同期でなければならず、それでも多くのことがあります。 –

1

あなたのJMSバックエンドでできることを示唆しません。おそらくよく使われていないかもしれません。

私たちは似たような実装と、ここで私たちは(私たちのバックエンドimplmentationは異なるユースケースのために、完全に異なっていたが、「非同期ユーザーexpが」一致する)になってしまったものです:

  1. ユーザーが提出することを許可します要求。
  2. (1)が受信されると、ジョブをバックエンド(JMSなど)に送信し、ジョブIDに結び付けます。
  3. 応答は(永続的または一時的な)このジョブID、例えば
  4. バックエンドの実装は、ジョブステータスが「ある場合
  5. (あなたがそれらを与えたハンドルを経由して)
  6. は、ユーザーがジョブのステータスをポーリングすることを許可するジョブのステータスを設定することにより、終了する必要があります彼らはあなたに負担をかけることがあります。&あなたに負担をかけています)
  7. ステータスが「正常に完了しました」と報告すると、ユーザーに結果にアクセスするために必要なその他のデータ(URLなど)が表示されます。
+0

ポーリングはwebserivceである必要はありません - 別の回答で示唆されているように、それはエンドポイントになる可能性があります.AJAXを介して投票の対象となります。 – madhurtanwani

+0

実際にはYahooのDelicious 「ブックマークファイルのインポート」のページ:https://secure.delicious.com/settings/bookmarks/import – madhurtanwani

関連する問題