【问题标题】:Apache camel get path of exchangeApache骆驼获取交换路径
【发布时间】:2018-09-01 00:29:54
【问题描述】:

我使用 apache camel 来监控我的文件系统 我使用以下路线:

public class FsRouteBuilder extends RouteBuilder {

        @Override
        public void configure() throws Exception {
            while(true){
            FsProcessor processor = new FsProcessor();
            from("file:C:\\Users\\My_User_Name\\Documents\\TRAX_PAYMENTS\\KBC?noop=true&idempotent=false").process(processor);
        }
        }
    }

此路由调用以下处理器

public class FsProcessor implements Processor {
 public void process(Exchange exchange) throws Exception {}
}

现在我要做的是获得交换的路径。这是因为我想监视它并且路径是唯一键。是否有属性或方法可以获得交换的路径?

【问题讨论】:

  • 你的意思是你要获取的文件名还是什么?顺便说一句,你不应该在路由构建器中做一个 while 循环——那是完全错误的。!
  • 是的,我指的是文件。交换是在文件夹中添加或删除的文件,路径是文件的唯一键。如果您想一直监控,那么无限循环有什么问题? grtz
  • 路线构建器用于设置路线,在运行时路线会一直运行,直到您停止路线或骆驼本身。

标签: java file path apache-camel


【解决方案1】:

可以如图所示从处理器获取文件路径

public class FsProcessor implements Processor {
 public void process(Exchange exchange) throws Exception {
    File file = exchange.getIn().getBody(File.class);
    String path = file.getPath();
  }
}

它使用Camel的类型转换器,

因此,如果您希望文件内容为 byte[] 或 String,您可以这样做

String data = exchange.getIn().getBody(String.class);

【讨论】:

    猜你喜欢
    • 2018-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-03
    • 2016-12-21
    • 1970-01-01
    • 1970-01-01
    • 2020-02-20
    相关资源
    最近更新 更多