184

私はJMSとApacheActiveMQについて少し読んでいました。そして、ここの人々は、JMSまたは同様のメッセージキューテクノロジーを実際にどのように使用しているのか疑問に思っていましたか?

4

11 に答える 11

196

JMS(ActiveMQはJMSブローカーの実装です)は、非同期要求処理を可能にするメカニズムとして使用できます。リクエストが完了するまでに長い時間がかかるため、または複数の関係者が実際のリクエストに関心を持っている可能性があるため、これを行うことをお勧めします。これを使用するもう1つの理由は、複数のクライアント(異なる言語で記述されている可能性がある)がJMSを介して情報にアクセスできるようにするためです。STOMPプロトコルを使用してC#/ Java / Rubyクライアントからのアクセスを許可できるため、ActiveMQはここでの良い例です。

実際の例は、特定の顧客の注文に使用されるWebアプリケーションの例です。その注文を出す(そしてそれをデータベースに保存する)ことの一部として、あなたはいくつかの追加のタスクを実行したいかもしれません:

  • ある種のサードパーティのバックエンドシステム(SAPなど)に注文を保存します
  • 注文が行われたことを知らせるメールを顧客に送信します

これを行うには、アプリケーションコードが注文IDを含むメッセージをJMSキューに公開します。キューをリッスンしているアプリケーションの一部は、orderIdを取得し、データベースで注文を検索してから、別のサードパーティシステムでその注文を行うことでイベントに応答する場合があります。アプリケーションの別の部分が、orderIdを取得し、顧客に確認メールを送信する責任がある場合があります。

于 2009-06-24T00:54:59.000 に答える
99

これらを常に使用して、長時間実行される操作を非同期で処理します。Webユーザーは、リクエストが処理されるまで5秒以上待ちたくないでしょう。それより長く実行されるものがある場合、1つの設計は、要求をキューに送信し、すぐにURLを返送して、ユーザーがジョブの終了を確認できるようにすることです。

パブリッシュ/サブスクライブは、送信者を多くの受信者から切り離すためのもう1つの優れた手法です。サブスクライバーは必要に応じて出入りできるため、これは柔軟なアーキテクチャです。

于 2009-06-24T00:34:10.057 に答える
19

分散(a)同期コンピューティング。
実際の例としては、アプリケーション全体の通知フレームワークがあります。このフレームワークは、アプリケーションの使用中のさまざまな時点で関係者にメールを送信します。したがって、アプリケーションはProducer、オブジェクトを作成し、Messageそれを特定のオブジェクトに配置して、Queue前進することによって機能します。問題のサブスクライブを行い、送信されたものの処理に注意を払う
一連のsが存在します。このトランザクションの過程で、sは特定の処理方法のロジックから切り離されることに注意してください。 メッセージングフレームワーク(ActiveMQなど)は、を提供することによってそのようなトランザクションを容易にするバックボーンとして機能します。ConsumerQueueMessageProducerMessage
MessageMessageBroker

于 2009-06-24T00:35:03.080 に答える
10

私はそれを使用して、異なる資金管理システム間で日中取引を送信しました。優れたテクノロジ メッセージングとは何かについて詳しく知りたい場合は、「Enterprise Integration Patterns」という本をお勧めします。リクエスト/リプライやパブリッシュ/サブスクライブなどの JMS の例がいくつかあります。

メッセージングは​​、統合のための優れたツールです。

于 2009-07-06T20:42:19.407 に答える
8

これを使用して、中断したくない、または既存のトランザクションと競合したくない非同期処理を開始します。

たとえば、「アイテムを購入する」などの高価で非常に重要なロジックがあるとします。アイテムを購入する重要な部分は「アイテム ストアに通知する」です。通知呼び出しを非同期にして、通知呼び出しに関係するロジック/処理がブロックされたり、購入ビジネス ロジックでリソースと競合したりしないようにします。最終結果、購入が完了し、ユーザーが満足し、私たちはお金を受け取り、キューは配達が保証されているため、ストアが開くとすぐに、またはキューに新しいアイテムがあるとすぐに通知されます.

于 2009-06-25T02:44:18.970 に答える
8

Amazonに似たオンライン小売Webサイトである私の学術プロジェクトに使用しました。JMS は、次の機能を処理するために使用されました。

  1. 出荷がある場所から別の場所に移動するときに、顧客による注文の位置を更新します。これは、JMS キューにメッセージを継続的に送信することによって行われました。
  2. 出荷の遅延などの異常なイベントについて警告し、顧客にメールを送信します。
  3. 配送が目的地に到達した場合、配送イベントを送信します。

メインサーバーに接続されたリモートクライアントも複数実装しました。接続が利用可能な場合は、メイン データベースへのアクセスに使用します。そうでない場合は、独自のデータベースを使用します。データの一貫性を処理するために、2PC メカニズムを実装しました。このため、これらのシステム間でメッセージを交換するために JMS を使用しました。つまり、キューにメッセージを送信してプロセスを開始するコーディネーターとして機能するシステムと、キューにメッセージを再度送信することで応答するシステムです。他の人がすでに述べたように、これは pub/sub モデルに似ていました。

于 2013-03-19T09:27:00.623 に答える
6

私は、JMSがさまざまな商業および学術プロジェクトで使用されているのを見てきました。完全に分離された分散システムが必要な場合はいつでも、JMSを簡単に理解できます。一般的に、1つのノードからリクエストを送信する必要があり、ネットワーク内の誰かが、送信者に受信者に関する情報を提供することなく、または提供することで、リクエストを処理する場合。

私の場合、論文でメッセージ指向ミドルウェア(MOM)の開発にJMSを使用しました。この場合、特定のタイプのオブジェクト指向オブジェクトが要求として一方の側で生成され、もう一方の側で応答としてコンパイルおよび実行されます。 。

于 2009-07-06T20:37:16.047 に答える
6

ActiveMQ と組み合わせて使用​​されるApache Camelは、エンタープライズ統合パターンを実行する優れた方法です

于 2010-01-02T00:52:50.257 に答える
5

メッセージングを使用してオンライン見積もりを作成しました

于 2009-06-24T02:46:20.460 に答える
4

信頼性の低いネットワークを介した膨大な数のリモート サイトのシステムとの通信に JMS を使用しています。信頼性の高いメッセージングと組み合わせた疎結合により、安定したシステム ランドスケープが生成されます。各メッセージは、技術的に可能になるとすぐに送信され、ネットワーク内のより大きな問題がシステム ランドスケープ全体に影響を与えることはありません...

于 2011-01-07T08:28:12.460 に答える