Routes
Camel supports the definition of routing rules using a Java DSL (domain specific language) which avoids the need for cumbersome XML.
For example a simple route can be created as follows.
Wiki Markup |
---|
{snippet:id=e1|lang=java|url=activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/RouteBuilderTest.java} |
As you can see from the above Camel uses URIs to wire endpoints together.
Filters
You can combine simple routes with filters which can be arbitrary Predicate implementations.
Wiki Markup |
---|
{snippet:id=e2|lang=java|url=activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/RouteBuilderTest.java} |
Choices
With a choice you provide a list of predicates and outcomes along with an optional default otherwise clause which is invoked if none of the conditions are met.
Wiki Markup |
---|
{snippet:id=e3|lang=java|url=activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/RouteBuilderTest.java} |
Using a custom processor
Here is an example of using a custom Processor
Wiki Markup |
---|
{snippet:id=e4|lang=java|url=activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/RouteBuilderTest.java} |
You can mix and match custom processors with filters and choices.
Wiki Markup |
---|
{snippet:id=e5|lang=java|url=activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/RouteBuilderTest.java} |
Interceptors
Here is an example of adding a few custom InterceptorProcessor objects to a processing pipeline:
Wiki Markup |
---|
{snippet:id=e7|lang=java|url=activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/RouteBuilderTest.java} |
When you start defining and interceptor stack with intercept(), you must follow up with the subsequent .target() so that the target of the interceptor stack is properly registered.