Installation
Steps:
- Add case-engine-scheduler-quartz The scheduler will be automatically available if the
Include Page |
---|
| _ProfileCaseEngine |
---|
| _ProfileCaseEngine |
---|
|
profile is added to the list of spring active profiles in the bootstrap.properties
. The case-engine profile should also be enabled. More information on how to configure the application using Spring Profiles can be found here: External application configuration with Spring Profiles. - Add the
application-case-engine
-scheduler-quartz.properties
file in the configuration location if it does not yet exist. This properties file is added in the Include Page |
---|
| _ConfigLocation |
---|
| _ConfigLocation |
---|
|
directory when using the installer. Otherwise, please create this according to the documentation belowBlueriq installer. - Run the provided scripts for creating the quartz tables in the database: msssql.sql, pgsql.sql or oracle.sql. The scripts are located in the release zip in \Runtime\Java\Webapp\DBScripts\blueriq-case-engine-scheduler-quartz
- Define quartz database connection in the application-externaldatasources.properties
Include Page |
---|
| _PropertiesExternalDatasources |
---|
| _PropertiesExternalDatasources |
---|
|
file.
Info |
---|
Steps 3 and 4 are applicable only if a job store database connection is chosen Quartz triggers and jobs are stored in a database instead of in memory job store. |
Configuration
Info |
---|
Every Quartz configuration property has to be specified in application-case-engine-scheduler-quartz.properties for the Runtime. |
In order to tune resources for job execution we provided a few details about the Thread Pool.
Quartz is configured using a set of properties. Quartz uses a job store in order to persist jobs details, triggers and other job related information. We support two types of job stores:
Memory (default)
Info |
---|
|
This is the default configuration for java Java environments. For more details about in memory job store configuration please visit Config RAM Job Store. |
By default memory mode is enabled which should not be used unless for demo's should be used only for demos and standalone development. For recommended settings please check the database settingsthe Database section. For memory the following setting should appear in the application-case-engine-scheduler-quartz.properties.be set in the Include Page |
---|
| _PropertiesCaseEngine |
---|
| _PropertiesCaseEngine |
---|
|
.
Code Block |
---|
title | application-schedulercase-quartzengine.properties |
---|
|
spring.quartz.job-store-type = memory |
Database
Scripts to create the required database content are provided for the following databases:
There are two types of connection that are supported:
Generate the Quartz Database
Warning |
---|
Generate the Quartz database with respect to the database used (either Oracle or MSSQL). In the Blueriq release zip there is a case-engine-scheduler-quartz folder that contains SQL scripts. Use the favorite database viewer to run those scripts against the database server. - Connect to the database server with the favorite viewer.
- Create a new database dedicated to quartz - pick a meaningful name for this, e.g. 'QuartzScheduler'.
- Depending on the database viewer used, one must make sure that the new database created is selected and set by default in the editor.
- Import the mssql.sql (for MSSQL) or oracle.sql (for Oracle server) and run it in the editor. If the run was successful new tables should be present under the newly created database.
|
JDBC Connection
To enable the JDBC Connection the externaldatasources profile must enabled and the following properties have to be usedFor database mode, which is required for production, specify the following in Include Page |
---|
| _PropertiesCaseEngine |
---|
| _PropertiesCaseEngine |
---|
|
:
Code Block |
---|
title | application-schedulercase-quartzengine.properties |
---|
|
spring.quartz.job-store-type=jdbc
spring.quartz.properties.org.quartz.jobStore.tablePrefix=QRTZ_
|
Code Block |
---|
title | application-externaldatasources.properties - mssql |
---|
|
blueriq.datasource.case-engine-scheduler-quartz.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
blueriq.dataSource.case-engine-scheduler-quartz.url=jdbc:sqlserver://<server_url>:<port>;databaseName=<database_name>;instance=<instance_name>
blueriq.datasource.case-engine-scheduler-quartz.username=<user>
blueriq.datasource.case-engine-scheduler-quartz.password=<password>
|
Code Block |
---|
title | application-externaldatasources.properties - oracle |
---|
|
blueriq.datasource.case-engine-scheduler-quartz.driverClassName=oracle.jdbc.driver.OracleDriver
blueriq.dataSource.case-engine-scheduler-quartz.url=jdbc:oracle:thin:@<server_url>:<port>:xe
blueriq.datasource.case-engine-scheduler-quartz.username=<user>
blueriq.datasource.case-engine-scheduler-quartz.password=<password>
|
JobStoreTX allows Quartz managing quartz related transactions.
# Enable the delegate for the specific database
#spring.quartz.properties.org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.MSSQLDelegate
#spring.quartz.properties.org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
#spring.quartz.properties.org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.oracle.OracleDelegate
# when using a JDBC datasource enable tx
#spring.quartz.properties.org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX
# when using a JNDI datasource enable CMT
#spring.quartz.properties.org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreCMT |
JDBCJobStore’s “table prefix” property is a string equal to the prefix given to Quartz’s tables that were created in your database. You can have multiple sets of Quartz’s tables within the same database if they use different table prefixes.
Info |
---|
When changing the org.quartz.jobStore.tablePrefix, please change the SQL create scripts accordingly. |
Info |
---|
For more information and properties related to the connection JobStoreTX please visit JDBC-JobStoreTX. |
JNDI Connection
To enable JNDI Connection jndidatasources profile must be activated and the following properties have to be used:
Code Block |
---|
title | application-scheduler-quartz.properties |
---|
|
spring.quartz.properties.org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreCMT
spring.quartz.properties.org.quartz.jobStore.tablePrefix=QRTZ_
|
Code Block |
---|
title | application-jndidatasources.properties - jndi |
---|
|
// JBoss Example provided that the jndi name is set to java:jboss/jdbc/quartzdb
blueriq.datasource.case-engine-scheduler-quartz.jndiName=java:jboss/jdbc/quartzdb
// Tomcat Example provided that the jndi name is set to jdbc/quartzdb
blueriq.datasource.case-engine-scheduler-quartz.jndiName=java:/comp/env/jdbc/quartzdb |
JobStoreCMT relies upon transactions being managed by the application which is using Quartz.
Info |
---|
For more information and properties related to the connection JobStoreCMT please visit JDBC-JobStoreCMT. |
Thread Pool
If the Database configuration is chosen we recommend to also add the thread pool with the following default values:
The quartz documentation suggests the following configuration: provided that the database allows X connections, then the threadCount must be set to X - 3.
Include Page |
---|
| _DatasourceConfiguration |
---|
| _DatasourceConfiguration |
---|
|
Info |
---|
The datasource created must be named scheduler-quartz |
Thread Pool
When the database is configured, we recommend to also configure the thread pool. Each DCM project gets its Each DCM project gets it's own trigger. It is recommended to have a thread per DCM project. For example if you have 3 DCM projects you should set the threadCount to 3.
Please check that the threadCount does not exceed the number of available database connections (or connections in the database connection pool). The quartz documentation suggests the following: provided that the database allows X connections, then the threadCount must be set to X - 3.
Below are the default thread Pool propertiesThread Pool properties are the following:
Code Block |
---|
language | powershell |
---|
title | application-schedulercase-quartzengine.properties |
---|
|
spring.quartz.properties.org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool
spring.quartz.properties.org.quartz.threadPool.threadCount=2 |
Setup Quartz
Various spring configurations
Using spring cloud config
Actions
Place your scheduler properties in Clustering
There are many configuration properties for clustering, see the Quartz documentation. To enable clustering, specify at least these properties:
Code Block |
---|
language | powershell |
---|
title | application-case-engine |
---|
|
-scheduler-quartz.properties (Check here for example) in the searchLocations you specified for spring cloud.Place application-externaldatasources.properties or application-jndidasarouces.properties files in the searchLocations you specified for spring cloud.Using spring config additional location
Info |
---|
Configure a spring.config.additional-location for your application. For more details about how to do this visit Installing Runtime. |
In spring.config.additional-location folder place the application-case-engine-scheduler-quartz.properties (Check here for example) file.In spring.config.additional-location folder place the application-externaldatasources.properties or application-jndidasarouces.properties files |
spring.quartz.properties.org.quartz.jobStore.isClustered=true
spring.quartz.properties.org.quartz.scheduler.instanceName=MyClusteredScheduler
# Have Quartz generate an instanceId for each node in the cluster
spring.quartz.properties.org.quartz.scheduler.instanceId=AUTO |
Anchor |
---|
| Troubleshooting |
---|
| Troubleshooting |
---|
|
Troubleshooting