使用Apache Camel的通用文件传输路由

时间:2016-05-05 17:40:29

标签: apache-camel

尝试使用Apache Camel组件创建传输文件的通用路由。

情境:

  • 多个服务器上存在多个源文件。
  • 需要将文件ftp到目标服务器。

我们有什么方法可以从端点到端点,它可以从属性读取源和目标配置并路由文件?

在这种情况下,如果我们需要添加更多的源和目标,我们只需要更改属性文件。我知道我们不能在Apache Camel中拥有来自端点的动态。

示例:

{server1-file1} - camel route(Generic) - {server2-file1}
{server1-file1} - camel route(Generic) - {server2-file1}
{server1-file1} - camel route(Generic) - {server2-file1}

1 个答案:

答案 0 :(得分:1)

要解决此特定问题,请在Java中创建一个Camel路由,允许您注入起始URI和结束URI。这个想法叫做路由模板。一个例子是:

public class FtpTemplateRoute extends RouteBuilder {
    private String startUri;
    private String endUri; 

    public FtpTemplateRoute(String startUri, String endUri) {
        this.startUri = startUri;
        this.endUri = endUri;
    }

    public void configure() {
        from(startUri)
           ...
           .to(endUri);
    }
}

当您设置CamelContext时,您可以将X实例化X次:

CamelContext context = new DefaultCamelContext();
context.addRoutes(
    new FtpTemplateRoute("ftp:///dirA", "ftp:///dirB"));
context.addRoutes(
    new FtpTemplateRoute("ftp:///dirC", "ftp:///dirD"));

由您决定如何加载源和目标uris。