10

ActiveMQ のドキュメント (私たちは 5.3 リリースを使用しています) を読んで、ActiveMQ で JDBC 永続化アダプターを使用する可能性に関するセクションを見つけました。

利点は何ですか?パフォーマンスや信頼性が向上しますか? いつ使用すればよいですか?

4

3 に答える 3

10

私の意見では、フェイルオーバー ブローカーが必要で、ファイル システムを使用できない場合は、JDBC 永続性を使用します。JDBC の永続性は、ファイル システムへのジャーナリングよりも大幅に遅くなりました (テスト中)。ブローカーが 1 つの場合は、ジャーナル ファイル システムが最適です。

アクティブ/パッシブ フェールオーバーで 2 つのブローカーを実行している場合、プライマリに障害が発生した場合にパッシブ ブローカーが検出して引き継ぐことができるように、2 つのブローカーは同じジャーナル/データ ストアにアクセスできる必要があります。ジャーナリングされたファイル システムを使用している場合、ファイルは、NFS、WinShare、iSCSI などを使用して、何らかの共有ネットワーク ドライブ上にある必要があります。単一障害点。

もう 1 つのオプションは、両方のブローカーを、ほとんどのアプリケーションが既にアクセスできるデータベースに向けることです。私たちのテストではジャーナリングされた JDBC の永続性が遅かったため、トレードオフは通常、パフォーマンスを犠牲にして単純化することです。

専用の NAS デバイスへの NFS マウントを介してジャーナル化された永続性を備えたアクティブ/パッシブ ブローカー ペアで ActiveMQ を実行しており、非常にうまく機能しています。私たちのシステムでは、毎秒 600 件以上のメッセージを問題なく処理できます。

于 2009-12-03T17:45:06.550 に答える
2

ジャーナリングされた JDBC の使用は、JDBC の永続性のみを使用するよりも優れているようです。ジャーナリングは JDBC の永続性よりもはるかに高速だからです。データベースにメッセージの追加のバックアップがあるため、ジャーナリングされた永続性のみよりも優れています。ジャーナリングされた JDBC には、ジャーナル内の同じデータが後でデータベースに永続化され、開発者が必要なときにアクセスできるという追加の利点があります。

ただし、ジャーナリングされた JDBC でマスター/スレーブ ActiveMQ トポロジを使用している場合、DB にまだ入っていないメッセージがジャーナルにある可能性があるため、メッセージが失われる可能性があります。

于 2010-12-30T20:20:12.443 に答える
1

再配信プラグイン ポリシーがあり、マスター/スレーブ設定を使用している場合、再配信にはスケジューラが使用されます。

現在、スケジューラは JDBC ではなく、ファイル データベースでのみセットアップできます。これに注意を払わないと、再配信中のすべてのメッセージが HA シナリオから取り出され、ブローカーに対してローカルになります。

https://issues.apache.org/jira/browse/AMQ-5238は、schedulerdb の JDBC 永続化アダプターを要求する Apache 課題トラッカーの問題です。それを実現するために投票することができます。

実際、最上位の AMQ HA ソリューションである LevelDB+ZooKeeper でも、スケジューラーはゲームから取り出され、ドキュメント化されて問題が発生します (ページの最後にあるhttp://activemq.apache.org/replicated-leveldb-store.html )。 .

したがって、JDBC シナリオでは、再配信ポリシー用にデータストアをセットアップする方法は安全ではなく、サポートされていないと見なすことができますが、少なくとも明確に文書化されていません。

于 2016-10-07T15:10:59.127 に答える