2.2. メッセージの永続性

AMQ Broker はメッセージデータを永続化し、ブローカーに予期せずシャットダウンしてもメッセージが失われないようにします。AMQ Broker には、ジャーナルベースの永続性とデータベースの永続性の 2 つのオプションを利用できます。

ジャーナルベースの永続性

デフォルトのメソッドは、ファイルシステムに保存されているメッセージジャーナルファイルにメッセージデータを書き込みます。最初に、これらのジャーナルファイルは、固定サイズで自動的に作成され、空のデータで入力されます。クライアントはさまざまなブローカー操作を実行すると、レコードがジャーナルに追加されます。ジャーナルファイルの 1 つがいっぱいになると、ブローカーは次のジャーナルファイルに移動します。

ジャーナルベースの永続性は、ローカルトランザクションと XA トランザクションなどのトランザクション操作をサポートします。

ジャーナルベースの永続化には、ファイルシステムへの IO インターフェースが必要です。AMQ Broker は以下をサポートします。

Linux 非同期 IO (AIO)

通常、AIO はパフォーマンスを最大化しますが、以下が必要になります。

Java NIO
Java NIO は優れたパフォーマンスを実現し、Java 6 以降のランタイムを備えたプラットフォームで実行できます。

データベースの永続性

このオプションは、Java Database Connectivity (JDBC) を使用して、メッセージとバインディングデータをデータベースに保存します。このオプションは、お使いの環境に信頼性があり、高パフォーマンスのデータベースプラットフォームを使用している場合や、会社ポリシーでデータベースを使用した場合は、このオプションが推奨されます。

ブローカー JDBC 永続ストアは標準の JDBC ドライバーを使用して、メッセージおよびバインディングデータをデータベーステーブルに保存する JDBC コネクションを作成します。データベーステーブルのデータは、ジャーナルベースの永続化と同じエンコーディングを使用してエンコードされます。つまり、SQL を使用して直接アクセスすると、データベースに保存されたメッセージは人間が判読できません。

データベースの永続性を使用するには、サポートされるデータベースプラットフォームを使用する必要があります。現在サポートされているデータベースプラットフォームを表示するには、「Red Hat AMQ 7 でサポートされる構成」を参照してください。