6.2.2. JDBC 接続プールの設定
JDBC 永続化のブローカーを設定した場合、ブローカーは JDBC 接続を使用してメッセージおよびバインディングデータをデータベーステーブルに保存します。
JDBC 接続が失敗した場合に、失敗時にアクティブな接続アクティビティー (データベースの読み取りや書き込みなど) がないことを確認した場合、ブローカーは実行中のままとなり、データベース接続の再確立を試みます。そのために、AMQ Broker は JDBC 接続プール を使用します。
通常、接続プール は、複数のアプリケーション間で共有できる指定のデータベースにオープン接続のセットを提供します。ブローカーの場合、ブローカーとデータベース間の接続に失敗すると、ブローカーはプールからの異なる接続を使用してデータベースへの再接続を試みます。プールは、ブローカーが受信する前に新しい接続をテストします。
以下の例は、JDBC 接続プールを設定する方法を示しています。
明示的に JDBC 接続プールを設定しない場合、ブローカーはデフォルト設定で接続プールを使用します。デフォルト設定では、既存の JDBC 設定の値が使用されます。詳細は、Default connection pooling configuration を参照してください。
前提条件
- この例は JDBC 永続性を設定する例をもとにしています。「JDBC 永続性の設定」 を参照してください。
接続プールを有効にするには、AMQ Broker は Apache Commons DBCP パッケージを使用します。ブローカーの JDBC 接続プールを設定する前に、このパッケージが提供する内容を理解する必要があります。詳細は以下を参照してください。
手順
-
<broker_instance_dir>/etc/broker.xml
設定ファイルを開きます。 以前に JDBC 設定に追加した
database-store
要素内で、jdbc-driver-class-name
、jdbc-connection-url
、jdbc-user
、jdbc-password パラメーター
を削除します。この手順の後半で、これらの設定は、対応する DBCP 設定パラメーターに置き換えます。注記上記のパラメーターを明示的に削除しない場合には、この手順の後半で追加する対象の DBCP パラメーターが優先されます。
database-store
要素内にdata-source-properties
要素を追加します。以下は例になります。<store> <database-store> <data-source-properties> </data-source-properties> <bindings-table-name>BINDINGS</bindings-table-name> <message-table-name>MESSAGES</message-table-name> <large-message-table-name>LARGE_MESSAGES</large-message-table-name> <page-store-table-name>PAGE_STORE</page-store-table-name> <node-manager-store-table-name>NODE_MANAGER_STORE</node-manager-store-table-name> <jdbc-network-timeout>10000</jdbc-network-timeout> <jdbc-lock-renew-period>2000</jdbc-lock-renew-period> <jdbc-lock-expiration>20000</jdbc-lock-expiration> <jdbc-journal-sync-period>5</jdbc-journal-sync-period> </database-store> </store>
新しい
data-source-properties
要素内で、接続プールに DBCP データソースプロパティーを追加します。キーと値のペアを指定します。以下は例になります。<store> <database-store> <data-source-properties> <data-source-property key="driverClassName" value="com.mysql.jdbc.Driver" /> <data-source-property key="url" value="jdbc:mysql://localhost:3306/artemis" /> <data-source-property key="username" value="ENC(5493dd76567ee5ec269d1182397346f)"/> <data-source-property key="password" value="ENC(56a0db3b71043054269d1182397346f)"/> <data-source-property key="poolPreparedStatements" value="true" /> <data-source-property key="maxTotal" value="-1" /> </data-source-properties> <bindings-table-name>BINDINGS</bindings-table-name> <message-table-name>MESSAGES</message-table-name> <large-message-table-name>LARGE_MESSAGES</large-message-table-name> <page-store-table-name>PAGE_STORE</page-store-table-name> <node-manager-store-table-name>NODE_MANAGER_STORE</node-manager-store-table-name> <jdbc-network-timeout>10000</jdbc-network-timeout> <jdbc-lock-renew-period>2000</jdbc-lock-renew-period> <jdbc-lock-expiration>20000</jdbc-lock-expiration> <jdbc-journal-sync-period>5</jdbc-journal-sync-period> </database-store> </store>
driverClassName
- JDBC データベースドライバーの完全修飾クラス名。
url
- データベースサーバーの完全な JDBC 接続 URL。
username
- データベースサーバー用に暗号化されたユーザー名。この値は、暗号化されていないプレーンテキストとして指定することもできます。設定ファイルで使用するユーザー名とパスワードの暗号化に関する詳細は、「設定ファイルのパスワードの暗号化」 を参照してください。
password
- データベースサーバー用に暗号化されたパスワード。この値は、暗号化されていないプレーンテキストとして指定することもできます。設定ファイルで使用するユーザー名とパスワードの暗号化に関する詳細は、「設定ファイルのパスワードの暗号化」 を参照してください。
poolPreparedStatements
-
このパラメーターの値を
true
に設定すると、プールには、無制限の準備済みキャッシュステートメントを追加できます。これにより、初期化コストが削減されます。 maxTotal
-
プールの最大接続数。このパラメーターの値を
-1
に設定すると、制限はありません。
明示的に JDBC 接続プールを設定しない場合、ブローカーはデフォルト設定で接続プールを使用します。デフォルト設定は、表で説明されています。
DBCP 設定パラメーター | デフォルト値 |
---|---|
|
既存の |
|
既存の |
|
既存の |
|
既存の |
|
|
|
|
再接続は、クライアントがブローカーにメッセージを送信していない場合に のみ 機能します。再接続時にデータベーステーブルへの書き込みを試みると、ブローカーは失敗し、シャットダウンします。
関連情報
- AMQ Broker でサポートされるデータベースの詳細は、Red Hat カスタマーポータルの Red Hat AMQ 7 Supported Configurations を参照してください。
- Apache Commons DBCP パッケージで利用可能なすべての設定オプションについては、Apache Commons DBCP Configuration Parameters を参照してください。