4

私は知りたいです:

シナリオがあります。ユーザーがシステムに製品を追加すると(私は開発中です)、ユーザーが追加した新製品を通知する通知をユーザーのクライアントベースに送信するリスナーがあります。

私はこのスレッドを読みましたが、(これまで使用したことがないので)JMSとThreadPoolingのJMSどちらThreadPoolを使用すべきか疑問に思いました。

WebアプリケーションのデプロイにTomcat5.5以降とJBoss5以降(会社の最後の手段によって異なります)を使用しています。

JMSを使用する場合、Apache ActiveMQまたはJBossメッセージングを使用しますか?両方とも、両方のプラットフォーム(TomcatとJBoss)で実行するための互換性がありますか?

前もって感謝します。

4

4 に答える 4

3

アプリケーション間の通信、特にイベントと通知の場合、JMS は非常に優れたソリューションです。JMS では、非同期メッセージングと呼ばれるものを使用して、このような通知を送受信できます。これにより、送信者と受信者はお互いを認識せず、同時に利用できる必要もありません。

ActiveMQ は、Java、C/C++、C#、Perl、PHP、Python、Ruby などのクライアント API を提供する、非常に広く使用されているメッセージ ブローカーです。これにより、Java やその他の言語で記述されたアプリケーションで JMS を使用できるようになります。

イベントと通知を処理するために、さまざまなビジネス状況で JMS メッセージングを何度も実装してきました。ほとんどの場合、使用されているメッセージ ブローカーに関係なく、Spring JMSを推奨および/または使用してきました。Spring JMS は信じられないほど使いやすく、非常に堅牢で拡張性に優れています。Spring JMS を使用すると、独自のメッセージ プロデューサーとメッセージ コンシューマーを作成する複雑さがなくなり、時間を大幅に節約できます。

Spring JMS を使用してメッセージを送信するのがいかに簡単かを確認するには、私が最近書いた「Spring JmsTemplate を使用して JMS メッセージを送信する」というタイトルのブログ記事をチェックしてください。また、Spring JMS を使用したメッセージの受信に関するブログ投稿にも取り組んでいます。

ご不明な点がございましたら、お気軽にお問い合わせください。

ブルース

于 2010-03-03T15:52:53.487 に答える
1

この返信はこの議論に非常に遅れていることを私は知っていますが、ActiveMQとTomcatの統合に関する情報を探している人々にとってそれでも価値があることを願っています。

ActiveMQとTomcatの統合に関する問題について多くの人から助けを求められたので、それについていくつかの記事を書くことにしました。このトピックはActiveMQinAction (第8章を参照)で取り上げられているだけでなく、 ActiveMQとTomcat:PerfectPartnersというタイトルの一連の記事も公開しました。うまくいけば、人々はこれが役立つと思うでしょう。

于 2010-12-16T17:10:02.803 に答える
1

かつて同様の要件があり、JMS を使用しました。次に、主な問題はエラーを処理する方法でした。SMTP は実際にはトランザクション対応ではないためです。

  1. 一部のメールが紛失しても大丈夫ですか?
  2. 一部のメールが 2 回送信されても​​問題ありませんか?

メッセージを 2 回送信する方がよいと判断したため、おおむね次のような設計になりました。

  1. コンテナ管理のトランザクションに依存しており、何らかの理由で電子メールを送信できない場合は、JMS トランザクションをロールバックすることにしました。メッセージは後で JMS によって再配信され、メッセージの送信が新たに試行されました。

  2. 電子メールの送信後に JMS メッセージ配信トランザクションが失敗した場合 (JMS の問題などにより)、トランザクションは自動的にロールバックされ、メッセージは後で再配信されました。この場合、STMP はトランザクションに対応していないため、電子メールは 2 回送信されました。

  3. (コードの観点から) 電子メールを送信できたとしても、後で SMTP サーバーに問題が発生する可能性があります。この場合、JMS は配信および消費されているため、どの電子メールが処理されたか、またそれらを手動で再送信する方法を知る方法がありませんでした。

しかし、私たちはすでに JMS を使用していました。JMS はトランザクショナルだが、SMTP はトランザクショナルではないというのが主な議論であるため、JMS を導入するつもりはありません。

おそらく ThreadPool を使用して、もっと軽いものを選び、状態をデータベースに保存して、どのメールを送信する必要があるか、または送信済みかを把握します。何か問題がある場合は、データベースを見て、アドホックな決定を下すことができます。

于 2010-03-03T12:46:56.947 に答える
0

私は永続的な JMS を選びます (私は WLS JMS と Websphere MQ しか使用していないので、AQ と JBoss のどちらがより確実に配信されるかを比較することはできません)。また、トラフィックがどれだけ増加すると予想されるかによって、電子メール エンジンを完全に別のアプリケーションにすることを真剣に検討します。

于 2010-03-03T11:50:20.287 に答える