質問

どうしてそうなっちゃうんですか読みエ約JMSは、Apache ActiveMQ.しか現実世界での使い方はこちらを使用JMSまたは類似のメッセージキュー技術です。

役に立ちましたか?

解決

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

実際の例は、特定の顧客に注文するために使用されるWebアプリケーションの例です。その注文の一部として(およびデータベースに保存するために)、いくつかの追加タスクを実行したい場合があります。

  • 注文を何らかの種類のサードパーティのバックエンドシステム(SAPなど)に保存する
  • お客様に注文を送信したことを知らせるメールを送信します

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

他のヒント

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

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

JMSには驚くほど多くの用途があります:

  • カスタマーサービスのWebチャット通信。

  • バックエンドのデバッグロギング。すべてのアプリサーバーは、さまざまなレベルでデバッグメッセージをブロードキャストしました。次に、JMSクライアントを起動して、デバッグメッセージを監視できます。確かに syslog のようなものを使用できたかもしれませんが、これはあらゆる方法を提供してくれました。コンテキスト情報に基づいて出力をフィルタリングします(アプリサーバー名、API呼び出し、ログレベル、ユーザーID、メッセージタイプなどによるeq)。出力も色分けしました。

  • ファイルへのデバッグロギング。上記と同じように、特定の部分のみがフィルターを使用して取り出され、一般的なログ記録のためにファイルに記録されました。

  • アラート。繰り返しますが、上記のロギングと同様の設定、特定のエラーの監視、さまざまな手段(電子メール、テキストメッセージ、IM、Growlポップアップなど)による人々への警告

  • ソフトウェアクラスターの動的な構成と制御。各アプリサーバーは、「configure me」をブロードキャストします。メッセージ、次にすべての種類の構成情報を含むメッセージで応答する構成デーモン。後で、すべてのアプリサーバーの構成を一度に変更する必要がある場合は、構成デーモンから実行できます。

  • そして通常-請求、注文処理、プロビジョニング、電子メール生成などの遅延アクティビティのキューに入れられたトランザクション...

非同期でメッセージの配信を保証したい場所ならどこでも最適です。

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

までに送信取引の取引と異なるファンド管理システム。いつもの技術をメールに足を踏み入れた瞬でおすすめの書籍"企業の統合のパターン".あるJMSの例のような要求/応答を公開/subscribe.

メールに優れた工具体制の構築を目指します。

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

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

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

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

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

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

私の場合、論文でメッセージ指向ミドルウェア(MOM)を開発する際にJMSを使用しました。あなたの応答として。

Apacheキャメル との併用はActiveMQはないという企業の統合のパターン

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top