Defining Camel routes
Camel Quarkus supports several domain specific languages (DSLs) to define Camel Routes.
Java DSL
Extending org.apache.camel.builder.RouteBuilder
and using the fluent builder methods available there
is the most common way of defining Camel Routes.
Here is an example from the timer-log quicksstart:
import org.apache.camel.builder.RouteBuilder;
public class TimerRoute extends RouteBuilder {
@Override
public void configure() throws Exception {
from("timer:foo?period=1000")
.log("Hello World");
}
}
Endpoint DSL
Since Camel 3.0, you can use fluent builders also for defining Camel endpoints. The following is equivalent with the previous example:
import org.apache.camel.builder.RouteBuilder;
import static org.apache.camel.builder.endpoint.StaticEndpointBuilders.timer;
public class TimerRoute extends RouteBuilder {
@Override
public void configure() throws Exception {
from(timer("foo").period(1000))
.log("Hello World");
}
}
Builder methods for all Camel components are available via |
XML DSL
In order to configure Camel routes, rests or templates in XML, you must add a Camel XML parser dependency to the classpath.
Since Camel Quarkus 1.8.0, camel-quarkus-xml-io-dsl
is the best choice.
With Camel Main, you can set a property that points to the location of resources XML files such as routes, REST DSL and Route templates:
camel.main.routes-include-pattern = routes/routes.xml, file:src/main/routes/rests.xml, file:src/main/rests/route-template.xml
Path globbing like |
<routes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://camel.apache.org/schema/spring"
xsi:schemaLocation="
http://camel.apache.org/schema/spring
http://camel.apache.org/schema/spring/camel-spring.xsd">
<route id="xml-route">
<from uri="timer:from-xml?period=1000"/>
<log message="Hello XML!"/>
</route>
</routes>
Spring XML with |
The route XML should be in the simplified version like:
<rests xmlns="http://camel.apache.org/schema/spring">
<rest id="greeting" path="/greeting">
<get uri="/hello">
<setBody>
<constant>Hello World!</constant>
</setBody>
</get>
</rest>
</rests>
<routeTemplates xmlns="http://camel.apache.org/schema/spring">
<routeTemplate id="myTemplate">
<templateParameter name="name"/>
<templateParameter name="greeting"/>
<templateParameter name="myPeriod" defaultValue="3s"/>
<route>
<from uri="timer:{{name}}?period={{myPeriod}}"/>
<setBody><simple>{{greeting}} ${body}</simple></setBody>
<log message="${body}"/>
</route>
</routeTemplate>
</routeTemplates>
Other route DSLs
Since Camel Quarkus 1.8.0, you can also use Java jOOR, Groovy, YAML, Kotlin or JavaScript for defining Camel routes.
These are mostly motivated by Camel K and its project-less approach to defining Camel routes.
With Camel K, all you need to run an integration is a file where the routes are defined using one of the supported DSLs.
With Camel Quarkus you still need a pom.xml
file with the appropriate dependencies in addition to the route definition files.
Except for YAML, these DSLs are supported only in JVM mode, because they load and compile the routes at runtime.
What’s next?
We recommend to continue with Configuration.