Apache-Camel 中的文件监听器
File Listener in Apache-Camel
我想在 Java 中编写 Camel Route 程序,不断检查文件夹中的文件,然后将它们发送到处理器。
我知道的方式对我来说似乎很 "dirty":
from( "file:C:\exampleSource" ).process( new Processor()
{
@Override
public void process( Exchange msg )
{
File file = msg.getIn().getBody( File.class );
Filecheck( file );
}
} );
}
} );
camelContext.start();
while ( true )
{
// run
}
有没有更好的实现方式?
提前致谢。
这里有一个可能更简洁的方法:
public static void main(String[] args) throws Exception {
Main camelMain = new Main();
camelMain.addRouteBuilder(new RouteBuilder() {
@Override
public void configure() throws Exception {
from("file:C:\xyz")
// do whatever
;
}
});
camelMain.run();
}
您还可以将文件处理移至专用 class:
import java.io.File;
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
public class FileProcessor implements Processor {
@Override
public void process(Exchange exchange) throws Exception {
File file = exchange.getIn().getBody(File.class);
processFile(file);
}
private void processFile(File file) {
//TODO process file
}
}
然后使用如下:
from("file:C:\exampleSource").process(new FileProcessor());
查看可用的 camel maven 原型:http://camel.apache.org/camel-maven-archetypes.html
其中 camel-archetype-java 反映了您的情况
我想在 Java 中编写 Camel Route 程序,不断检查文件夹中的文件,然后将它们发送到处理器。
我知道的方式对我来说似乎很 "dirty":
from( "file:C:\exampleSource" ).process( new Processor()
{
@Override
public void process( Exchange msg )
{
File file = msg.getIn().getBody( File.class );
Filecheck( file );
}
} );
}
} );
camelContext.start();
while ( true )
{
// run
}
有没有更好的实现方式?
提前致谢。
这里有一个可能更简洁的方法:
public static void main(String[] args) throws Exception {
Main camelMain = new Main();
camelMain.addRouteBuilder(new RouteBuilder() {
@Override
public void configure() throws Exception {
from("file:C:\xyz")
// do whatever
;
}
});
camelMain.run();
}
您还可以将文件处理移至专用 class:
import java.io.File;
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
public class FileProcessor implements Processor {
@Override
public void process(Exchange exchange) throws Exception {
File file = exchange.getIn().getBody(File.class);
processFile(file);
}
private void processFile(File file) {
//TODO process file
}
}
然后使用如下:
from("file:C:\exampleSource").process(new FileProcessor());
查看可用的 camel maven 原型:http://camel.apache.org/camel-maven-archetypes.html
其中 camel-archetype-java 反映了您的情况