【问题标题】:Apache camel get value from body()Apache骆驼从body()中获取价值
【发布时间】:2019-05-22 20:38:04
【问题描述】:

这是我的骆驼主班,也是我的骆驼路线

public class MyCamelRoute {

    public static void main(String... args) {
        CamelContext context = new DefaultCamelContext();
        try {
            context.addRoutes(new CSVRoute());
            context.start();
            Thread.sleep(20000);
            context.stop();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

class CSVRoute extends RouteBuilder {

    public void configure() throws Exception {
        CsvDataFormat csv = new CsvDataFormat();
        from("file:my_csv.csv&noop=true")
        .split(body().tokenize("\n")).streaming()
        .unmarshal(csv)
        .log(LoggingLevel.INFO, body().toString());
    }
}

运行它时,我得到了我期望的结果

13:30:42.730 [Camel (camel-1) thread #1 - file://my_csv.csv] INFO route1 - simple{[[534488]]}

13:30:42.732 [Camel (camel-1) thread #1 - file://my_csv.csv] INFO route1 - simple{[[969034]]}

13:30:42.734 [Camel (camel-1) 线程 #1 - file://my_csv.csv] INFO route1 - 简单{[[510711]]}

13:30:42.736 [Camel (camel-1) thread #1 - file://my_csv.csv] INFO route1 - simple{[[778410]]}

13:30:42.737 [Camel (camel-1) 线程 #1 - file://my_csv.csv] INFO route1 - 简单{[[803306]]}

13:30:42.739 [Camel (camel-1) 线程 #1 - file://my_csv.csv] INFO route1 - 简单{[[567892]]}

13:30:42.741 [Camel (camel-1) thread #1 - file://my_csv.csv] INFO route1 - simple{[[269041]]}

13:30:42.743 [Camel (camel-1) thread #1 - file://my_csv.csv] INFO route1 - simple{[[622768]]}

13:30:42.745 [Camel (camel-1) 线程 #1 - file://my_csv.csv] INFO route1 - 简单{[[701100]]}

13:30:42.746 [Camel (camel-1) thread #1 - file://my_csv.csv] INFO route1 - simple{[[169439]]}

13:30:42.747 [Camel (camel-1) thread #1 - file://my_csv.csv] INFO route1 - simple{[[435246]]}

我的问题是,我想访问 simple{[[value]]} 中的值,但我不完全确定如何。

我之前所做的只是将它发送到一个进程并使用exchange.getBody().getIn() 并从那里检查/转换它,但我想尽量避免使用一个进程。

非常感谢任何和所有帮助

【问题讨论】:

    标签: java multithreading csv apache-camel


    【解决方案1】:

    要记录您必须使用的消息正文

    .log(LoggingLevel.INFO, "${body}");
    

    因为 INFO 是默认的,所以它执行起来更快

    .log("${body}");
    

    你也可以写一段文字

    .log("The message contains: ${body}");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-16
      • 2016-12-08
      相关资源
      最近更新 更多