In
this post, I am going to explain, how can you perform content based routing.
Here the content can be anything like data headers, file name, content of the
file, file modification date etc.,
Create
new maven project ‘camelContentRouting’ in eclipse. If you do not know, how to
create maven project, refer my previous tutorials.
Camel
provides number predicates to route the information based on given condition.
from("file:C:\\Users\\Public\\demo?noop=true")
.choice()
.when(header("CamelFileName")
.endsWith("xlsx"))
.to("file:C:\\Users\\Public\\demoCopyXlsFiles");
Above
snippet copy all xls file to ‘demoCopyXlsFiles’ folder.
Project
structure looks like below.
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>camelContentRouting</groupId> <artifactId>camelContentRouting</artifactId> <version>1</version> <dependencies> <!-- https://mvnrepository.com/artifact/org.apache.camel/camel-core --> <dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-core</artifactId> <version>2.22.1</version> </dependency> </dependencies> </project>
FileCopyRoute.java
package com.sample.app.routes; import org.apache.camel.builder.RouteBuilder; public class FileCopyRoute extends RouteBuilder { @Override public void configure() throws Exception { from("file:C:\\Users\\Public\\demo?noop=true").choice().when(header("CamelFileName").endsWith("xlsx")) .to("file:C:\\Users\\Public\\demoCopyXlsFiles"); } }
Application.java
package com.sample.app; import java.util.concurrent.TimeUnit; import org.apache.camel.CamelContext; import org.apache.camel.impl.DefaultCamelContext; import com.sample.app.routes.FileCopyRoute; public class Application { public static void main(String args[]) throws Exception { CamelContext context = new DefaultCamelContext(); context.addRoutes(new FileCopyRoute()); context.start(); TimeUnit.MINUTES.sleep(1); context.stop(); } }
No comments:
Post a Comment