RabbitMQ を初めて使用するので、オフラインのターゲット ノードをどのように処理するかを考えていました。
例として、このシナリオ:
- ログを永続ストレージに保存する 1 つのログ記録アプリケーション
- ログ記録サーバーを介してログを永続ストレージに書き込む N ログ公開アプリケーション。
次の 2 つのオプションがあります。
- 各パブリッシング アプリケーションは、ログ メッセージをローカルの RabbitMQ インスタンスにパブリッシュし、ログ記録サーバーはこれらのそれぞれにサブスクライブする必要があります。
- ログ記録アプリケーションには、各ログ発行アプリケーションがメッセージを配信するローカルの RabbitMQ インスタンスがあります。
オプション 1 では、新しいアプリケーションが表示されるか移動するたびに、記録アプリケーションを再構成/再コーディング/通知する必要があります。したがって、オプション 2 が正しいと思います。新しいパブリッシング アプリケーションはそれぞれ、記録アプリケーションの RabbitMQ ノードに書き込むだけです。
私が苦労しているのは、録音アプリケーションの Node がダウンした状況にどう対処するかということだけです。オンラインに戻るまでメッセージを保存する独自のシステムを構築する必要がありますか?それとも、RabbitMQ の機能を使用して対処できますか? つまり、各パブリッシング アプリケーションのローカルの RabbitMQ は、メッセージを受信し、オンラインに戻ったらすぐに記録アプリケーションの RabbitMQ に転送できますか?
Federated プラグインについて、それが解決策かどうか理解できないことがわかりました。ターゲットノードがオフラインのときにメッセージをキューに入れるために、別の何かが必要になるか、独自のローカルキューシステムを作成する必要があるかもしれません (必要がないことを願っています)。
アーキテクチャの例やソリューションへのリンクは大歓迎です。
ところで: https://groups.google.com/forum/#!topic/easynetq/nILIKSjxyMgは、アプリケーションごとに RabbitMQ ノードをインストールするべきではないと述べているので、MSQM や ZeroMQ などに頼る必要があるかもしれません (?)