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>
NOTE: Each specified Camel configuration should be started by the Scheduler.