5.6. Quartz を使用したクラスターのビジネスアプリケーションの設定
クラスターでアプリケーションを実行する場合は、Quartz タイマーサービスを設定する必要があります。
前提条件
- business application の Web サイトを使用して作成した ZIP ファイルがあり、クラスターで使用する予定である。
手順
quartz.properties
ファイルを作成して、以下のコンテンツを追加します。#============================================================================ # Configure Main Scheduler Properties #============================================================================ org.quartz.scheduler.instanceName = SpringBootScheduler org.quartz.scheduler.instanceId = AUTO org.quartz.scheduler.skipUpdateCheck=true org.quartz.scheduler.idleWaitTime=1000 #============================================================================ # Configure ThreadPool #============================================================================ org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool org.quartz.threadPool.threadCount = 5 org.quartz.threadPool.threadPriority = 5 #============================================================================ # Configure JobStore #============================================================================ org.quartz.jobStore.misfireThreshold = 60000 org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreCMT org.quartz.jobStore.driverDelegateClass=org.jbpm.process.core.timer.impl.quartz.DeploymentsAwareStdJDBCDelegate org.quartz.jobStore.useProperties=false org.quartz.jobStore.dataSource=myDS org.quartz.jobStore.nonManagedTXDataSource=notManagedDS org.quartz.jobStore.tablePrefix=QRTZ_ org.quartz.jobStore.isClustered=true org.quartz.jobStore.clusterCheckinInterval = 5000 #============================================================================ # Configure Datasources #============================================================================ org.quartz.dataSource.myDS.connectionProvider.class=org.jbpm.springboot.quartz.SpringConnectionProvider org.quartz.dataSource.myDS.dataSourceName=quartzDataSource org.quartz.dataSource.notManagedDS.connectionProvider.class=org.jbpm.springboot.quartz.SpringConnectionProvider org.quartz.dataSource.notManagedDS.dataSourceName=quartzNotManagedDataSource
注記Quartz 設定ファイルのデータソース名は、Spring bean を参照します。接続プロバイダーは、
org.jbpm.springboot.quartz.SpringConnectionProvider
に設定して、Spring ベースのデータソースとの統合を有効にする必要があります。クラスター化された Quartz タイマーを有効にして、1 つ前の手順で作成した
quartz.properties
ファイルのパスを設定するには、以下のプロパティーを<BUSINESS-APPLICATION>/<BUSINESS-APPLICATION>-service/src/main/resourcesapplication.properties
ファイルに追加します。ここで、<BUSINESS-APPLICATION>
は Spring Boot プロジェクトの名前に置き換えます。jbpm.quartz.enabled=true jbpm.quartz.configuration=quartz.properties
以下の内容を
<BUSINESS-APPLICATION>/<BUSINESS-APPLICATION>-service/src/main/resources/application.properties
ファイルに追加して、管理対象のデータソースと、管理対象外のデータソースを作成します。# enable to use database as storage jbpm.quartz.db=true quartz.datasource.name=quartz quartz.datasource.username=sa quartz.datasource.password=sa quartz.datasource.url=jdbc:h2:./target/spring-boot-jbpm;MVCC=true quartz.datasource.driver-class-name=org.h2.Driver # used to configure connection pool quartz.datasource.dbcp2.maxTotal=15 # used to initialize quartz schema quartz.datasource.initialization=true spring.datasource.schema=classpath*:<QUARTZ_TABLES_H2>.sql spring.datasource.initialization-mode=always
上記の例では、
<QUARTZ_TABLES_H2>
は Quartz H2 データベースのスキーマスクリプトの名前に置き換えます。上記の設定の最後の 3 行で、データベーススキーマを初期化します。
デフォルトでは、Quartz には 2 つのデータソースが必要です。
- デシジョンエンジンまたはプロセスエンジンのトランザクションに参加する管理対象データソース。
- トランザクション処理を行わずにトリガーするタイマーを検索するための管理対象外のデータソース。
Red Hat Process Automation Manager ビジネスアプリケーションでは、Quartz データベース (スキーマ) が Red Hat Process Automation Manager テーブルと共存することを想定しているので、Quartz のトランザクション操作に使用するデータソースを生成します。
他の (トランザクション以外) データソースを設定する必要がありますが、主なデータソースと同じデータベースを参照する必要があります。