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 反映了您的情况