You
can filter the messages while sending to the destinations.
For
example, below statements copy only text files from ‘demo’ folder to ‘demoCopy’
folder.
Predicate
onlyTextFiles = new Predicate() {
@Override
public boolean matches(Exchange
exchange) {
String fileName = (String)
exchange.getIn().getHeader("CamelFileName");
return
fileName.endsWith(".txt");
}
};
from("file:C:\\Users\\Public\\demo?noop=true")
.filter(onlyTextFiles)
.to("file:C:\\Users\\Public\\demoCopy");
I
am using below maven dependency
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-core</artifactId>
<version>2.22.1</version>
</dependency>
Find
the below working application.
FileCopyRoute.java
package com.sample.app.routes; import org.apache.camel.Exchange; import org.apache.camel.Predicate; import org.apache.camel.builder.RouteBuilder; public class FileCopyRoute extends RouteBuilder { Predicate onlyTextFiles = new Predicate() { @Override public boolean matches(Exchange exchange) { String fileName = (String) exchange.getIn().getHeader("CamelFileName"); return fileName.endsWith(".txt"); } }; @Override public void configure() throws Exception { from("file:C:\\Users\\Public\\demo?noop=true").filter(onlyTextFiles).to("file:C:\\Users\\Public\\demoCopy"); } }
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(); } }
Run
Application.java, you can observe only text files are copied to destination
folder.
No comments:
Post a Comment