10.2. デフォルトのファイルジャーナルを使用したメッセージングジャーナルの永続化

JBoss EAP メッセージングには、メッセージング向けに最適化された高パフォーマンスのファイルベースのジャーナルが備わっています。

JBoss EAP メッセージングジャーナルのファイルには設定可能なファイルサイズがあります。また、このジャーナルは、追加のみ可能です。このように単一の書き込み操作を有効にすることでパフォーマンスが向上します。これは、ディスク上の 1 組のファイルで構成されます。このファイルは、最初に固定サイズで事前作成され、パディングが書き込まれます。メッセージの追加、削除、更新などのサーバーオペレーションが実行されると、ジャーナルファイルが満杯になるまで、オペレーションの記録が追加されます。満杯になると、次のジャーナルファイルが使用されます。

すべてのデータが削除された場合、高度なガベージコレクションアルゴリズムにより、ジャーナルファイルを回収して再利用できるかどうかが決定されます。圧縮アルゴリズムにより、ジャーナルファイルから不要な領域が削除され、データが圧縮されます。

またジャーナルは、ローカルトランザクションと XA トランザクションの両方に完全に対応しています。

10.2.1. メッセージングジャーナルファイルシステムの実装

ジャーナルの大半は Java で記述されていますが、ファイルシステムとのやりとりは抽象化されており、さまざまなプラグ可能な実装が可能となります。JBoss EAP メッセージングには次の 2 つの実装が標準装備されています。

Java New I/O (NIO)
この実装は、ファイルシステムとのインターフェースに標準の Java NIO を使用します。これにより非常に優れたパフォーマンスを実現できます。また、Java 6 以降のランタイムを備えたプラットフォーム上で稼働します。JBoss EAP 7 には Java 8 が必要となります。NIO は JBoss EAP がサポートするオペレーティングシステムで使用できます。
Linux Asynchronous IO (ASYNCIO)

これを実装する場合は、ネイティブコードラッパーを使用して Linux 非同期 IO ライブラリー (ASYNCIO) と通信をします。これを実装すると、明示的に同期をする必要がなくなります。通常 ASYNCIO は Java NIO よりもパフォーマンスが良好です。

使用中のジャーナルタイプを確認するには、以下の CLI 要求を発行します。

/subsystem=messaging-activemq/server=default:read-attribute(name=runtime-journal-type)

システムは、以下のいずれかの値を返します。

表10.1 ジャーナルタイプの戻り値

戻り値説明

NONE

永続性が無効

NIO

Java NIO が使用中

ASYNCIO

libaio を使った AsyncIO が使用中

DATABASE

JDBC 永続性が使用中

以下のファイルシステムは、libaio ネイティブを使用している場合、Red Hat Enterprise Linux 6、Red Hat Enterprise Linux 7、および Red Hat Enterprise Linux 8 のみでテストされ、サポートされています。これらは他のオペレーティングシステムではテストされておらず、サポートされていません。

  • EXT4
  • XFS
  • NFSv4
  • GFS2

以下の表は、libaio ネイティブありとなしの両方で、サポートの有無をテストされた HA 共有ストアファイルシステムを示しています。

オペレーティングシステムファイルシステムlibaio ネイティブを使用したサポート
(journal-type="ASYNCIO")
libaio ネイティブを使用しないサポート
(journal-type="NIO")

Red Hat Enterprise Linux 6

NFSv4

あり

あり

Red Hat Enterprise Linux 7 以降

NFSv4

あり

あり

Red Hat Enterprise Linux 6

GFS2

あり

なし

Red Hat Enterprise Linux 7 以降

GFS2

あり

なし