第20章 バッチアプリケーションの設定
JBoss EAP 7 には JSR-352 に定義されている Java バッチアプリケーションのサポートが導入されました。バッチアプリケーションを実行するための環境を設定し、batch-jberet サブシステムを使用してバッチジョブを管理できます。
バッチアプリケーションの開発に関する詳細は、JBoss EAP 開発ガイドの Java バッチアプリケーションの開発を参照してください。
20.1. batch ジョブの設定
JBeret 実装を基にした batch-jberet サブシステムを使用してバッチジョブを設定できます。
デフォルトの batch-jberet サブシステム設定は、インメモリージョブリポジトリーとデフォルトのスレッドプールの設定を定義します。
<subsystem xmlns="urn:jboss:domain:batch-jberet:1.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)
バッチジョブリポジトリーおよびスレッドプールを設定することもできます。
20.1.1. バッチジョブリポジトリーの設定
本項では、管理 CLI を使用してバッチジョブ情報を保存するインメモリーおよび JDBC ジョブリポジトリーを設定する方法を説明します。管理コンソールを使用してジョブリポジトリーを設定することもできます。管理コンソールを使用する場合は Configuration タブで Batch サブシステムを選択し、左側のメニューから In Memory または JDBC を選択します。
インメモリージョブリポジトリーの追加
バッチジョブ情報をメモリーに保存するジョブリポジトリーを追加できます。
/subsystem=batch-jberet/in-memory-job-repository=REPOSITORY_NAME:add
JDBC ジョブリポジトリー
バッチジョブ情報をデータベースに保存するジョブリポジトリーを追加できます。data-source を指定してデータベースに接続する必要があります。
/subsystem=batch-jberet/jdbc-job-repository=REPOSITORY_NAME:add(data-source=java:jboss/datasources/DATASOURCE)
デフォルトのジョブリポジトリーの設定
インメモリーまたは JDBC ジョブリポジトリーをバッチアプリケーションのデフォルトのジョブリポジトリーとして設定できます。
/subsystem=batch-jberet:write-attribute(name=default-job-repository,value=REPOSITORY_NAME)
サーバーをリロードする必要があります。
reload
20.1.2. バッチスレッドプールの設定
本項では、管理 CLI を使用を使用してバッチジョブに使用されるスレッドプールおよびスレッドファクトリーを設定する方法を説明します。管理コンソールを使用してスレッドプールおよびスレッドファクトリーを設定することもできます。管理コンソールを使用する場合は Configuration タブで Batch サブシステムを選択し、左側のメニューから Thread Pools または Thread Factories を選択します。
スレッドプールの設定
スレッドプールを追加するときに 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 サブシステムを選択して、バッチスレッドプールのランタイム情報を表示することもできます。
20.2. バッチジョブの管理
デプロイメントの batch-jberet サブシステムリソースを使用すると、バッチジョブを開始、停止、および再開できます。ジョブ実行の詳細を表示することもできます。
バッチジョブの再開
STOPPED または FAILED 状態のジョブを再開するには、実行 ID を指定し、任意でバッチジョブの再開時に使用するプロパティーを指定します。
/deployment=DEPLOYMENT_NAME/subsystem=batch-jberet:restart-job(execution-id=EXECUTION_ID,properties={PROPERTY=VALUE})実行 ID はジョブインスタンスが最後に実行された ID である必要があります。
バッチジョブの開始
バッチジョブを開始するには、ジョブ XML ファイルを指定し、任意でバッチジョブの再開時に使用するプロパティーを指定します。
/deployment=DEPLOYMENT_NAME/subsystem=batch-jberet:start-job(job-xml-name=JOB_XML_NAME,properties={PROPERTY=VALUE})バッチジョブの停止
実行中のバッチジョブを停止するには、実行 ID を指定します。
/deployment=DEPLOYMENT_NAME/subsystem=batch-jberet:stop-job(execution-id=EXECUTION_ID)
バッチジョブ実行詳細の表示
バッチジョブ実行の詳細を表示することができます。このランタイム情報を表示するには include-runtime=true パラメーターを使用する必要があります。
/deployment=DEPLOYMENT_NAME/subsystem=batch-jberet:read-resource(recursive=true,include-runtime=true)
{
"outcome" => "success",
"result" => {"job" => {"import-file" => {
"instance-count" => 2,
"running-executions" => 0,
"execution" => {
"2" => {
"batch-status" => "COMPLETED",
"create-time" => "2016-04-11T22:03:12.708-0400",
"end-time" => "2016-04-11T22:03:12.718-0400",
"exit-status" => "COMPLETED",
"instance-id" => 58L,
"last-updated-time" => "2016-04-11T22:03:12.719-0400",
"start-time" => "2016-04-11T22:03:12.708-0400"
},
"1" => {
"batch-status" => "FAILED",
"create-time" => "2016-04-11T21:57:17.567-0400",
"end-time" => "2016-04-11T21:57:17.596-0400",
"exit-status" => "Error : org.hibernate.exception.ConstraintViolationException: could not execute statement",
"instance-id" => 15L,
"last-updated-time" => "2016-04-11T21:57:17.597-0400",
"start-time" => "2016-04-11T21:57:17.567-0400"
}
}
}}}
}
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.