SQL
JVM since1.0.0 Native since1.0.0
Perform SQL queries.
What’s inside
-
SQL component, URI syntax:
sql:query
-
SQL Stored Procedure component, URI syntax:
sql-stored:template
Please refer to the above links for usage and configuration details.
Maven coordinates
Or add the coordinates to your existing project:
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-sql</artifactId>
</dependency>
Check the User guide for more information about writing Camel Quarkus applications.
Camel Quarkus limitations
Oracle JDBC driver brings some GraalVM native-image configuration that breaks the serialization support in Camel Quarkus and Quarkus in general. See this quarkus issue for more details.
Aggregation repository does not work in native mode with Oracle db, because of this issue.
Additional Camel Quarkus configuration
Configuring a DataSource
This extension leverages Quarkus Agroal for DataSource
support. Setting up a DataSource
can be achieved via configuration properties.
quarkus.datasource.db-kind=postgresql
quarkus.datasource.username=your-username
quarkus.datasource.password=your-password
quarkus.datasource.jdbc.url=jdbc:postgresql://localhost:5432/your-database
quarkus.datasource.jdbc.max-size=16
The Camel SQL component will automatically resolve the DataSource
bean from the registry. When configuring multiple datasources, you can specify which one is to be used on an SQL endpoint via
the URI options datasource
or dataSourceRef
. Refer to the SQL component documentation for more details.
Zero configuration with Quarkus Dev Services
In dev and test mode you can take advantage of Configuration Free Databases. The Camel SQL component will be automatically configured to use a DataSource
that points to a local containerized instance of the database matching the JDBC driver type that you have selected.
SQL scripts
When configuring sql
or sql-stored
endpoints to reference script files from the classpath, set the following configuration property to ensure that they are available in native mode.
quarkus.native.resources.includes = queries.sql, sql/*.sql
SQL aggregation repository in native mode
In order to use SQL aggregation repositories like JdbcAggregationRepository
in native mode, you must enable native serialization support.
In addition, if your exchange bodies are custom types, they must be registered for serialization by annotating their class declaration with @RegisterForReflection(serialization = true)
.