Configure the Runtime Built-in Scheduler

The scheduler built in the runtime stores all the schedules into a database.

The default backend database is an HSQL database built into the runtime, and provides a ready-to-use quickstart configuration.

The built-in HSQL database is, by default, only accessible from the runtime itself, and is NOT recommended for production use.

For production use, we recommend using the Certified Database Servers.

Configure the scheduler

To configure the runtime scheduler:

  1. Prepare the database:

    1. Create in the database of your choice (See Certified Database Servers.) the necessary schema/database to host the schedules, as well as the database user to access this storage.

    2. Manually create the scheduler tables in the target database/schema using the script corresponding to your database technology. The script is in the /scripts/scheduler folder of the runtime installation directory.

  2. Configure the properties/engineParameters.xml file as explained below.

  3. Restart the runtime.

The above steps are necessary to configure the scheduler storage to your database. If you are using the default runtime configuration, the schedules are stored in an HSQL database built in the runtime. See Built-in HSQL database.
Example 1. Sample scheduler configuration (engineParameters.xml)
    <!-- Main properties -->
    <parameter name="org.quartz.scheduler.instanceName" value="RUNTIME_HSQL_STD"/>
    <parameter name="org.quartz.scheduler.instanceId" value="RUNTIME_HSQL_STD"/>
    <!-- Configure ThreadPool -->
    <parameter name="org.quartz.threadPool.class" value="org.quartz.simpl.SimpleThreadPool"/>
    <parameter name="org.quartz.threadPool.threadCount" value="3"/>
    <!-- Configure Jobstore -->
    <parameter name="org.quartz.jobStore.misfireThreshold" value="10000"/>
    <parameter name="org.quartz.jobStore.class" value="org.quartz.impl.jdbcjobstore.JobStoreTX"/>
    <parameter name="org.quartz.jobStore.driverDelegateClass" value="org.quartz.impl.jdbcjobstore.StdJDBCDelegate"/>
    <parameter name="org.quartz.jobStore.useProperties" value="false"/>
    <parameter name="org.quartz.jobStore.dataSource" value="internal"/>
    <parameter name="org.quartz.jobStore.tablePrefix" value="STB_"/>
    <parameter name="org.quartz.jobStore.isClustered" value="false"/>
    <!-- Configure Datasources --> (1)
    <parameter name="org.quartz.dataSource.internal.driver" value="org.hsqldb.jdbcDriver"/>
    <parameter name="org.quartz.dataSource.internal.URL" value="jdbc:hsqldb:file:internalDb/scheduler/scheduler"/>
    <parameter name="org.quartz.dataSource.internal.user" value="backend-user"/>
    <parameter name="org.quartz.dataSource.internal.password" value="backend-password"/>
    <parameter name="org.quartz.dataSource.internal.connectionProvider.class" value="com.indy.engine.scheduler.XdiQuartzConnectionProvider"/>
    <parameter name="org.quartz.dataSource.internal.maxConnections" value="5"/>
    <parameter name="org.quartz.dataSource.internal.module" value="internal"/>
    <...> (2)
1 Configure the scheduler parameters to your database.
2 The runtime is using quartz as the scheduler. You can add or modify any other quartz parameters in this configuration.
For the Runtime to communicate with the database hosting your schedules, you must install that database’s JDBC driver and libraries in the Runtime Module that you specified in the org.quartz.dataSource.internal.module parameter.
The org.quartz.jobStore.misfireThreshold property defines the number of milliseconds to wait after a delivery schedule gets misfired, before considering the next schedules of this delivery. For example, if a delivery schedule is misfired because another one was still running, the scheduler will wait this amount of time before considering the next schedules for this delivery.

Change the scheduler directory

If it does not exist already, the runtime will create a scheduler directory in its installation folder to hold a scheduler database. This directory, and the database file name, are defined in the org.quartz.dataSource.internal.URL parameter. The following example shows a scheduler/internalDb path:

<parameter name="org.quartz.dataSource.internal.URL" value="jdbc:h2:file:scheduler/internalDb;SCHEMA=SCHEDULER"/>

The parameter can take a different file path, including absolute file system paths. If the path points to different directories, make sure they have write permissions enabled.

Legacy configuration file

Previous versions of Runtime used an file to store scheduler configuration information. Runtime still supports this file for compatibility purposes.

To use an file from previous Runtime versions:

  1. Remove the <scheduler></scheduler> section from the engineParameters.xml file

  2. Add your file to the properties directory in the Runtime installation directory.

Support for this file may be removed in future releases.