# Databases configuration
First, you need to configure Kestra to use a database for its Queue and Repository:
kestra:
queue:
type: mysql
repository:
type: mysql
# Minimal examples
The most important thing is to configure the way Kestra connect to a database. For now, Kestra support PostgreSQL and MySQL.
Here is a minimal MySQL configuration example :
datasources:
mysql:
url: jdbc:mysql://local:3306/kestra
driverClassName: com.mysql.cj.jdbc.Driver
username: kestra
password: k3str4
dialect: MYSQL
Here is minimal PostgreSQL configuration:
datasources:
postgres:
url: jdbc:postgresql://local:5432/kestra
driverClassName: org.postgresql.Driver
username: kestra
password: k3str4
# datasources.*
properties
Since Kestra is built upon Micronaut (opens new window) and HikariCP (opens new window), many configurations are available in order to configure the database pool:
Properties | Type | Description |
---|---|---|
url | String | Set the jdbc connection string. |
catalog | String | Set the default schema name to be set on connections. |
schema | String | Set the default catalog name to be set on connections. |
username | String | Set the default username used. |
password | String | Set the default password to use. |
transaction-isolation | String | Set the default transaction isolation level. |
pool-name | String | Set the name of the connection pool. |
connection-init-sql | String | Set the SQL string that will be executed on all new connections when they are created, before they are added to the pool. |
connection-test-query | String | Set the SQL query to be executed to test the validity of connections. |
connection-timeout | Long | Set the maximum number of milliseconds that a client will wait for a connection from the pool. |
idle-timeout | Long | This property controls the maximum amount of time (in milliseconds) that a connection is allowed to sit idle in the pool. |
minimum-idle | Long | The property controls the minimum number of idle connections that HikariCP tries to maintain in the pool, including both idle and in-use connections. |
initialization-fail-timeout | Long | Set the pool initialization failure timeout. |
leak-detection-threshold | Long | This property controls the amount of time that a connection can be out of the pool before a message is logged indicating a possible connection leak. |
maximum-pool-size | Int | The property controls the maximum size that the pool is allowed to reach, including both idle and in-use connections. |
max-lifetime | Long | This property controls the maximum lifetime of a connection in the pool. |
validation-timeout | Long | Sets the maximum number of milliseconds that the pool will wait for a connection to be validated as alive. |
# Queues configuration
# kestra.jdbc.queues
Kestra queues based on database simulate queues doing long polling. It queries a queues
table to detect new messages. Change these parameters to reduce the latency (but increase load on the database).
kestra.jdbc.queues.min-poll-interval
: is the minimum duration between 2 pollskestra.jdbc.queues.max-poll-interval
: is the maximum duration between 2 pollskestra.jdbc.queues.poll-switch-interval
: is the duration when no message are received switching from min polling to max polling (ex: one message received, themin-poll-interval
is used, if no new message arrived withpoll-switch-interval
, we switch tomax-poll-interval
).
kestra:
jdbc:
queues:
min-poll-interval: 100ms
max-poll-interval: 1000ms
poll-switch-interval: 5s
# kestra.jdbc.cleaner
Kestra cleans the queues
table to avoid infinite grow of this table. You can control how often you want this cleaning to happen, and how long we will keep messages in the queue with retention
.
kestra:
jdbc:
cleaner:
initial-delay: 1h
fixed-delay: 1h
retention: 7d