第22章 バッチアプリケーションの設定
JBoss EAP 7 には JSR-352 に定義されている Java バッチアプリケーションのサポートが導入されました。バッチアプリケーションを実行するための環境を設定し、batch-jberet サブシステムを使用してバッチジョブを管理できます。
バッチアプリケーションの開発に関する詳細は、JBoss EAP『 開発ガイド』の「Java バッチアプリケーション開発」を参照してください。
22.1. batch ジョブの設定 リンクのコピーリンクがクリップボードにコピーされました!
JBeret 実装を基にした batch-jberet サブシステムを使用してバッチジョブを設定できます。
デフォルトの batch-jberet サブシステム設定は、インメモリージョブリポジトリーとデフォルトのスレッドプールの設定を定義します。
<subsystem xmlns="urn:jboss:domain:batch-jberet:2.0">
<default-job-repository name="in-memory"/>
<default-thread-pool name="batch"/>
<job-repository name="in-memory">
<in-memory/>
</job-repository>
<thread-pool name="batch">
<max-threads count="10"/>
<keepalive-time time="30" unit="seconds"/>
</thread-pool>
</subsystem>
デフォルトでは、サーバーの一時停止中に停止したバッチジョブはサーバーの再開時に再度開始されます。restart-jobs-on-resume プロパティーを false に設定すると STOPPED 状態のジョブをそのままにすることができます。
/subsystem=batch-jberet:write-attribute(name=restart-jobs-on-resume,value=false)
バッチジョブリポジトリーおよびスレッドプールを設定することもできます。
22.1.1. バッチジョブリポジトリーの設定 リンクのコピーリンクがクリップボードにコピーされました!
本項では、管理 CLI を使用してバッチジョブ情報を保存するインメモリーおよび JDBC ジョブリポジトリーを設定する方法を説明します。管理コンソールでは、Configuration
インメモリージョブリポジトリーの追加
バッチジョブ情報をメモリーに保存するジョブリポジトリーを追加できます。
/subsystem=batch-jberet/in-memory-job-repository=REPOSITORY_NAME:add
JDBC ジョブリポジトリー
バッチジョブ情報をデータベースに保存するジョブリポジトリーを追加できます。データソースの名前を指定してデータベースに接続する必要があります。
/subsystem=batch-jberet/jdbc-job-repository=REPOSITORY_NAME:add(data-source=DATASOURCE)
デフォルトのジョブリポジトリーの設定
インメモリーまたは JDBC ジョブリポジトリーをバッチアプリケーションのデフォルトのジョブリポジトリーとして設定できます。
/subsystem=batch-jberet:write-attribute(name=default-job-repository,value=REPOSITORY_NAME)
サーバーをリロードする必要があります。
reload
22.1.2. バッチスレッドプールの設定 リンクのコピーリンクがクリップボードにコピーされました!
本項では、管理 CLI を使用してバッチジョブに使用するスレッドプールとスレッドファクトリーを設定する方法を説明します。管理コンソールでは、Configuration
スレッドプールの設定
スレッドプールを追加するときに max-threads を指定する必要があります。 パーティションのジョブが想定どおりに実行されるように 2 つのスレッドが予約されているため、3 よりも大きい値を常に設定してください。
スレッドプールを追加します。
/subsystem=batch-jberet/thread-pool=THREAD_POOL_NAME:add(max-threads=10)必要な場合は
keepalive-timeの値を設定します。/subsystem=batch-jberet/thread-pool=THREAD_POOL_NAME:write-attribute(name=keepalive-time,value={time=60,unit=SECONDS})
スレッドファクトリーの使用
スレッドファクトリーを追加します。
/subsystem=batch-jberet/thread-factory=THREAD_FACTORY_NAME:addスレッドファクトリーの属性を設定します。
-
group-name- このスレッドファクトリーに作成するスレッドグループの名前。 -
priority- 作成されたスレッドの優先度。 thread-name-pattern- スレッドの名前の作成に使用されるテンプレート。以下のパターンを使用できます。-
%%- パーセント記号 -
%t- ファクトリーごとのスレッドシーケンス番号 -
%g- グローバルスレッドシーケンス番号 -
%f- ファクトリーシーケンス番号 -
%i- スレッド ID
-
-
スレッドファクトリーをスレッドプールに割り当てます。
/subsystem=batch-jberet/thread-pool=THREAD_POOL_NAME:write-attribute(name=thread-factory,value=THREAD_FACTORY_NAME)サーバーをリロードする必要があります。
reload
デフォルトスレッドプールの設定
別のスレッドプールをデフォルトのスレッドプールとして設定できます。
/subsystem=batch-jberet:write-attribute(name=default-thread-pool,value=THREAD_POOL_NAME)
サーバーをリロードする必要があります。
reload
スレッドプールの統計表示
read-resource 管理 CLI 操作を使用するとバッチスレッドプールのランタイム情報を表示できます。このランタイム情報を表示するには include-runtime=true パラメーターを使用する必要があります。
/subsystem=batch-jberet/thread-pool=THREAD_POOL_NAME:read-resource(include-runtime=true)
{
"outcome" => "success",
"result" => {
"active-count" => 0,
"completed-task-count" => 0L,
"current-thread-count" => 0,
"keepalive-time" => undefined,
"largest-thread-count" => 0,
"max-threads" => 15,
"name" => "THREAD_POOL_NAME",
"queue-size" => 0,
"rejected-count" => 0,
"task-count" => 0L,
"thread-factory" => "THREAD_FACTORY_NAME"
}
}
管理コンソールの Runtime タブで Batch サブシステムを選択して、バッチスレッドプールのランタイム情報を表示することもできます。