Configuring Camel endpoints

The Spring configuration is used for configuring Camel routes.

Two types of endpoints are used in the Camel route, namely 'from' and 'to'.

  • the 'from' endpoint is preconfigured in FEJ and must be the following: "<from uri="direct:routingRule"/>".  It is used by the Camel destination endpoint for sending messages handled in Groovy rules.
  • 'to' endpoints can be as many as required. They are implemented in Camel and can be found in the official Camel documentation.

The configuration is located in the sysconf/fej-camel-context.xml file and has the following structure:

Example of sysconf/fej-camel-context.xml
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="
           http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
           http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context.xsd
       ">
 
    <context:component-scan base-package="com.epam.fej.camel"/>
 
    <camelContext id="<context_id>" xmlns="http://camel.apache.org/schema/spring">
        <route>
            <from uri="direct:routingRule"/>
            <to uri="google-pubsub://<project_id>:<topic_name>"/>
            <to uri="kafka:<topic_name>?brokers=<ip>:<port>"/>
        </route>
    </camelContext>
 
</beans>

Where <context_id> is a configuration identification that is used in Groovy rules that route the messages.

Example of configuration:

Example of sysconf/fej-camel-context.xml
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="
           http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
           http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context.xsd
       ">
 
    <context:component-scan base-package="com.epam.fej.camel"/>
 
    <camelContext id="google_pub_sub_news" xmlns="http://camel.apache.org/schema/spring">
        <route>
            <from uri="direct:routingRule"/>
            <bean ref="sohToBarProcessor" method="process"/>
            <to uri="google-pubsub://or2-msq-epm-bfix-t1iylu:NewsMessages"/>
            <to uri="kafka:NewsMessages?brokers=localhost:9092"/>
        </route>
    </camelContext>
 
    <camelContext id="google_pub_sub_orders" xmlns="http://camel.apache.org/schema/spring">
        <route>
            <from uri="direct:routingRule"/>
            <to uri="google-pubsub://or2-msq-epm-bfix-t1iylu:OrderMessages"/>
        </route>
    </camelContext>
</beans>

NOTEEach specified Camel configuration should be started by the Scheduler.