質問

私は、次のような動作をする小さなプロトタイプ システムを作成することを目標として、ActiveMQ と Camel を学習しているところです。

alt text
(ソース: paulstovell.com)

(大きい)

Orders システムで注文が行われると、メッセージがすべてのサブスクライバー (パブリッシュ/サブスクリプション システム) に送信され、サブスクライバーは注文の処理において役割を果たすことができます。の 注文, 配送 そして 請求書発行 アプリケーションには独自の ActiveMQ インストールがあるため、3 つのシステムのいずれかがオフラインであっても、他のシステムは機能し続けることができます。 何か ActiveMQ インストール間でのメッセージの移動を処理します。

メッセージが同じ ActiveMQ インスタンス上にある場合、Apache Camel でルート経由でメッセージをあるキューから別のキューに移動するのは非常に簡単です。したがって、これはサブスクリプションキューの管理に機能します。

次の課題は、ある ActiveMQ インスタンスから別の ActiveMQ インスタンスにメッセージをプッシュすることですが、次に何を調べればよいかわかりません。

  1. Camel は異なる ActiveMQ インストール間でルーティングできますか?(異なるマシン上にある場合、JMI エンドポイント URI が何になるのかわかりません)。
  2. ActiveMQ には 保存して転送する 能力。これは、注文と配送/請求の間でメッセージを移動するために使用するものですか?
  3. それともこれは何ですか Apache ServiceMix 解決することを目的としていますか?
役に立ちましたか?

解決

これは、ActiveMQのとキャメルのために適しているかなり簡単非同期、イベント駆動型のアプリケーションです。

実際にあなたが別のActiveMQのインスタンスから明示的にメッセージを移動しないでください。それが動作する方法は、ブローカーするのネットワークとして知られているものを使用しています。 ActiveMQの紫、ActiveMQの緑とActiveMQの-青:あなたのケースでは、次の3つのブローカーを持っていると思います。 ActiveMQの紫色一方向ActiveMQの緑色とブローカネットワークとActiveMQの青色を生成します。これは、ActiveMQの紫色は、消費者の需要に基づいて、ActiveMQの緑とActiveMQの青にメッセージをストアアンドフォワードすることができます。

受注アプリは、ActiveMQの紫色の注文キューに注文を受け付けます。注文アプリは消費し、それがインボイスメッセージや配送メッセージであるかどうかを決定するためにメッセージを処理するためにラクダを使用します。請求書発行キューまたはActiveMQの紫色の出荷キューのいずれかにキャメルルートメッセージを。

消費者の需要は、請求書発行アプリと送料アプリから来ています。請求書は、ActiveMQの緑の請求書発行キューからメッセージを消費するためにラクダを使用しています。送料アプリはActiveMQの青の出荷・キューからメッセージを消費するためにラクダを使用しています。そのため、ブローカーのネットワークのと理由ActiveMQの-green.invoicingキューおよびActiveMQの-blue.shippingキュー上の消費者の需要のため、メッセージが適切なブローカーとキューにActiveMQの紫から転送されます。特定のブローカーへの明示的ルーティングメッセージをする必要はありません。

私はこれがあなたの質問に答えたいと考えています。あなたはもう持っているなら、私に教えてください。

ブルース

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