1

基本的に、Webアプリケーションで長時間実行されるタスクの問題があります。現在、このタスクは、タスクの実行中にブロックしているEJBによって実行されます(タスクは外部プログラムであり、EJBは結果を待機するだけです)。

この投稿によると、JMSキューと一緒にメッセージ駆動型Beanを使用することを考えました。

私の質問:このアプローチの利点は何ですか?@AsychnronousMDBの場合と同じ機能がないのと同じように、EJBの呼び出しメソッドに注釈を付けるとしたらどうでしょうか。保留中のジョブが失われないという機能は、JMS / MDBアプローチの唯一の利点ですか?リソース管理の観点から、EJBにタスクまたはMDBの結果を待機させる方がよいでしょうか。

4

1 に答える 1

1

私はこのパターンに JMS をよく使用してきました。その理由は、EJB 3.1 より前では、セッション Bean への非同期呼び出しを行うことがまったくできなかったからです。そのため、既存のアプリでこのようなコードを頻繁に見つける可能性があります。

EJB で非同期呼び出しを使用すると、セットアップが簡単になるという利点があります (JMS の使用はそれほど複雑ではありませんが、リソースなどを作成する必要があります)。可用性とスケーラビリティが重要なトピックである環境で実行している場合、JMS を使用するといくつかの利点があります。

  • アプリケーション サーバーのクラッシュを考えると、JMS メッセージを永続化することが興味深い場合があります。
  • さらに重要なことは、私の意見では、JMS を使用すると、JMS キューの背後にいくつかの「処理」ノードを追加できるため、処理が長く負荷が増加した場合に容量を簡単に追加できることです (これは一部のアプリケーションによっても達成できることに注意してくださいリモート セッション Bean を使用している場合はアプリ サーバーを使用しますが、それほど単純ではありません)。
于 2012-10-25T20:43:45.580 に答える