Camel を使用した分散 ActiveMQ
-
21-09-2019 - |
質問
私は、次のような動作をする小さなプロトタイプ システムを作成することを目標として、ActiveMQ と Camel を学習しているところです。
(ソース: paulstovell.com)
Orders システムで注文が行われると、メッセージがすべてのサブスクライバー (パブリッシュ/サブスクリプション システム) に送信され、サブスクライバーは注文の処理において役割を果たすことができます。の 注文, 配送 そして 請求書発行 アプリケーションには独自の ActiveMQ インストールがあるため、3 つのシステムのいずれかがオフラインであっても、他のシステムは機能し続けることができます。 何か ActiveMQ インストール間でのメッセージの移動を処理します。
メッセージが同じ ActiveMQ インスタンス上にある場合、Apache Camel でルート経由でメッセージをあるキューから別のキューに移動するのは非常に簡単です。したがって、これはサブスクリプションキューの管理に機能します。
次の課題は、ある ActiveMQ インスタンスから別の ActiveMQ インスタンスにメッセージをプッシュすることですが、次に何を調べればよいかわかりません。
- Camel は異なる ActiveMQ インストール間でルーティングできますか?(異なるマシン上にある場合、JMI エンドポイント URI が何になるのかわかりません)。
- ActiveMQ には 保存して転送する 能力。これは、注文と配送/請求の間でメッセージを移動するために使用するものですか?
- それともこれは何ですか 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の紫から転送されます。特定のブローカーへの明示的ルーティングメッセージをする必要はありません。
私はこれがあなたの質問に答えたいと考えています。あなたはもう持っているなら、私に教えてください。
ブルース
他のヒント
うーむ、私は最高の状態ではなく、公正しばらく手を出してきましたが、私は何かをしようとしています。
ActiveMQの異なるインストール間のルートができて、私は問題がここにあるのかわからないんだけどので、ちょうど私の知る限り、標準URIを使用しています。私は、TCPを使用すると、あなたは大丈夫だろうと思うだろう。 (後でそれを言及)ServiceMixのを使用して、あなただけのはconnectionFactoryを指定したい&その中でURIを提供しています。このリンクは、いくつかの例を示し http://servicemix.apache.org/servicemix-jms -new-endpoints.htmlするます。
//ラクダ:それはあなたが( httpの後だったものだ場合は、キャメルは、耐久性のある加入者をサポートしています。 apache.org/durable-subscriber.html
の)?このパターンは、加入者がオフラインの場合、メッセージが準備ができたときに、加入者がオンラインに戻るまで、それが開催されることを保証します。これはまた、ServiceMixのによってサポートされている(上と「subscriptionDurable」を探して与えられたリンクを参照してください。