@DynamicRouter Annotation

As of Camel 2.5.0 we now support the use of @DynamicRouter on a bean method to easily create a Dynamic Router using a Java method.

Simple Example using @Consume and @DynamicRouter

package com.acme.foo;

public class RouterBean {

    @Consume(uri = "activemq:foo")
    @DynamicRouter
    public String route(String body) {
        // compute where we should go next and return the uri of the endpoint.
        // return null to stop dynamic routing
    }
}

For example if the above bean is configured in Spring when using a <camelContext> element as follows

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
       http://activemq.apache.org/camel/schema/spring http://activemq.apache.org/camel/schema/spring/camel-spring.xsd
    ">

  <camelContext xmlns="http://activemq.apache.org/camel/schema/spring"/>

  <bean id="myDynamicRouter" class="com.acme.foo.RouterBean"/>

</beans>

then a route will be created consuming from the foo queue on the ActiveMQ component which when a message is received the message will routed dynamic using the Dynamic Router.

  • No labels