Quarkus Extension Configuration
This section of the Camunda Quarkus extension documentation covers the configuration options for the process engine within a Quarkus application.
The documentation on the Camunda Quarkus Extension Configuration is intended for Quarkus application developers. It requires some knowledge on Quarkus CDI support, Quarkus configuration, as well as Camunda Process Engine Configuration properties.
Process Engine Configuration
An instance of the QuarkusProcessEngineConfiguration
class configures the process engine in a Quarkus application.
A QuarkusProcessEngineConfiguration
instance provides the following defaults:
Property name | Description | Default value |
---|---|---|
jobExecutorActivate |
The job executor is activated. | true |
transactionsExternallyManaged |
Transactions are externally managed. | true |
databaseSchemaUpdate |
The Database Configuration section goes into more details on this propery and the resulting behavior. | true |
idGenerator |
An instance of StrongUuidGenerator is used. | StrongUuidGenerator |
jdbcUrl ,jdbcUsername ,jdbcPassword ,jdbcDriver
|
No JDBC configuration is present since a Quarkus datasource should be configured and used. | null |
history
|
Camunda Cockpit works best with history level FULL. | full |
Quarkus allows to configure a Quarkus application via a MicroProfile Config source. You can read more about
configuring a Quarkus application in the Quarkus configuration page. The Camunda Quarkus extension
docs use the application.properties
format in the examples, but you can use any supported Quarkus config source.
You can set any process engine configuration properties under the quarkus.camunda
prefix. The
Process Engine Configuration Properties page documents all the available properties. Please
convert any property names from camelCase
to the kebab-case
format, like in the following example:
quarkus.camunda.cmmn-enabled=false
quarkus.camunda.dmn-enabled=false
quarkus.camunda.history=none
quarkus.camunda.initialize-telemetry=false
Programmatic Configuration
You can also configure the process engine programmatically, by providing a QuarkusProcessEngineConfiguration
CDI bean.
@ApplicationScoped
public class MyCustomEngineConfig extends QuarkusProcessEngineConfiguration {
public MyCustomEngineConfig() {
// your custom configuration is done here
setProcessEngineName("customEngine");
}
}
Note that values of properties set in a QuarkusProcessEngineConfiguration
instance have a lower ordinal than
properties defined in a Quarkus config source.
In the above example, a QuarkusProcessEngineConfiguration
CDI bean defines “customEngine” as the processEngineName
.
However, if you define the following in an application.properties
file
quarkus.camunda.process-engine-name=quarkusEngine
then “quarkusEngine” will be used as the process engine name since Quarkus config sources have a higher ordinal than a
QuarkusProcessEngineConfiguration
CDI bean.
Job Executor Configuration
As with the process engine configuration properties above, you can set any job executor
configuration properties under the quarkus.camunda.job-executor
prefix. The Job Executor Configuration Properties
page documents all the available properties. Convert any property names you intend to use from camelCase
to the
kebab-case
format, like in the following example:
quarkus.camunda.job-executor.max-jobs-per-acquisition=5
quarkus.camunda.job-executor.lock-time-in-millis=500000
quarkus.camunda.job-executor.wait-time-in-millis=7000
quarkus.camunda.job-executor.max-wait=65000
Quarkus Extension Configuration
In addition to the general process engine and job executor configuration properties mentioned in the previous
sections, the Camunda Quarkus extension provides some Quarkus-specific configuration properties. They can be set
through a Quarkus config source, but not through the QuarkusProcessEngineConfiguration
class. You can find all
the Quarkus-specific properties in the following table:
Prefix | Property name | Description | Default value |
---|---|---|---|
Data Source | |||
quarkus.camunda |
.datasource |
Specifies which Quarkus datasource to use. If not defined, the primary Quarkus datasource will be used. For configuring a Quarkus Datasource, have a look on the Quarkus Datasource page. | <default> |
Job Executor | |||
quarkus.camunda.job-executor.thread-pool |
.max-pool-size |
Sets the maximum number of threads that can be present in the thread pool. | 10 |
.queue-size |
Sets the size of the queue which is used for holding tasks to be executed. | 3 |
Persistence
The Engine Extension integrates with a JDBC Connection Pool and a Jakarta Transaction Manager provided by Quarkus. The latter allows you to integrate your business logic into database transactions of the Engine. Read more about it under JTA Transaction Integration. A datasource is required to run the Camunda process engine.
Choose from multiple datasources
When multiple datasources are available in your application, you can choose the one the Engine Extension
should use by its name via the camunda.datasource
configuration property. Consider the example configuration below:
quarkus.datasource.engine-datasource.db-kind=oracle
quarkus.datasource.engine-datasource.username=my-username
quarkus.datasource.engine-datasource.password=my-password
quarkus.datasource.engine-datasource.jdbc.url=jdbc:oracle:thin:@localhost:1521:ORCL
quarkus.camunda.datasource=engine-datasource
Using Quarkus Transaction Integration with CockroachDB
Quarkus allows its users to control transaction boundaries. This is documented on their Quarkus Transactions page. In case you use the Quarkus Transactions Integration with CockroachDB, please see the documentation section on external transaction management with CockroachDB to understand how to configure the Camunda process engine correctly.
Example
The following is an example of a Quarkus application.properties
file that provides custom values for the process
engine configuration, job executor and data source:
# process engine configuration
quarkus.camunda.cmmn-enabled=false
quarkus.camunda.dmn-enabled=false
quarkus.camunda.history=none
quarkus.camunda.initialize-telemetry=false
# job executor configuration
quarkus.camunda.job-executor.thread-pool.max-pool-size=12
quarkus.camunda.job-executor.thread-pool.queue-size=5
quarkus.camunda.job-executor.max-jobs-per-acquisition=5
quarkus.camunda.job-executor.lock-time-in-millis=500000
quarkus.camunda.job-executor.wait-time-in-millis=7000
quarkus.camunda.job-executor.max-wait=65000
quarkus.camunda.job-executor.backoff-time-in-millis=5
# custom data source configuration and selection
quarkus.datasource.my-datasource.db-kind=h2
quarkus.datasource.my-datasource.username=camunda
quarkus.datasource.my-datasource.password=camunda
quarkus.datasource.my-datasource.jdbc.url=jdbc:h2:mem:camunda;MVCC=TRUE;TRACE_LEVEL_FILE=0;DB_CLOSE_ON_EXIT=FALSE
quarkus.camunda.datasource=my-datasource