Show Table of Contents
20.10. 永続性
20.10.1. HornetQ の永続性
HornetQ は独自の永続性を処理します。HornetQ には、メッセージング固有のユースケースに対して最適化された高パフォーマンスなジャーナルが含まれています。
HornetQ ジャーナルは設定可能なファイルサイズにのみ追加されるため、単一の書き込み操作を有効にすることでパフォーマンスを向上します。HornetQ ジャーナルは、ディスク上のファイルのセットで構成されます。これらのファイルは当初、固定サイズで事前に作成され、パディングが含まれています。サーバーの操作 (add message、delete message、update message など) が実行されると、ジャーナルファイルが満杯になるまで操作の記録がジャーナルに追加され、満杯になると次のジャーナルファイルが使用されます。
高度なガベージコレクションアルゴリズムは、ジャーナルファイルのすべてのデータが削除されたときに、ジャーナルファイルを回収および再使用できるかどうかを決定します。圧縮アルゴリズムはジャーナルファイルからデッドスペースを削除し、データを圧縮します。
また、ジャーナルはローカルおよび XA トランザクションの両方を完全サポートします。
ジャーナルのほとんどは Java で記述されますが、さまざまなプラグ可能な実装を許可するため、ファイルシステムとの対話は抽象化されます。HornetQ に同梱される 2 つの実装は次のとおりです。
- Java New I/O (NIO)ファイルシステムとのインターフェースに標準の Java NIO を使用します。大変優れたパフォーマンスを実現し、Java 6 またはそれ以降のランタイムのプラットフォーム上で稼働します。
- Linux 非同期 IO (AIO)ネイティブコードラッパーを使用し、Linux 非同期 IO ライブラリー (AIO) と対話します。データが永続化されると、HornetQ は AIO を用いてメッセージを受信します。これにより、明示的な同期化の必要がなくなります。通常、AIO のパフォーマンスは Java NIO よりも優れていますが、Linux カーネル 2.6 (またはそれ以降) と libaio パッケージが必要になります。また、AIO には ext2、ext3、ext4、jfs、または xfs タイプのファイルシステムも必要になります。
標準の HornetQ コアサーバーは次のジャーナルインスタンスを使用します。
- bindings journalサーバーおよび属性にデプロイされたキューのセットを含む、バインディング関連のデータを格納します。また、ID シーケンスカウンターなどのデータも格納します。メッセージジャーナルよりもスループットが低くなるため、バインディングジャーナルは常に NIO ジャーナルになります。このジャーナル上のファイルには、hornetq-bindings という接頭辞が付けられます。各ファイルには bindings 拡張子が付けられます。ファイルサイズは 1048576 バイトで、bindings フォルダーに格納されます。
- JMS journalJMS キュー、トピックスまたは接続ファクトリー、これらリソースの JNDI バインディングなど、JMS 関連のデータをすべて格納します。管理 API で作成された JMS リソースはすべてこのジャーナルで永続化されますが、設定ファイルで設定されたリソースは永続化されません。このジャーナルは JMS が使用される場合のみ作成されます。
- message journalメッセージ自体および duplicate-id キャッシュを含む、メッセージ関連のデータをすべて格納します。デフォルトでは、HornetQ はこのジャーナルに AIO を使用します。AIO が使用できない場合は、自動的に NIO へフォールバックします。
大型のメッセージはメッセージジャーナル外部で永続化されます。メモリー不足の場合は、ディスクへメッセージを呼び出すよう HornetQ を設定します。永続化が必要ない場合は、データを永続化しないよう HornetQ を設定できます。

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.