Apache骆驼从body()获得价值

时间:2019-05-22 20:38:04

标签: java multithreading csv apache-camel

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

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)线程#1-file://my_csv.csv]信息route1-简单{[[534488]]}

     

13:30:42.732 [Camel(camel-1)线程#1-file://my_csv.csv]信息route1-简单{[[[969034]]}

     

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

     

13:30:42.736 [Camel(camel-1)线程#1-file://my_csv.csv]信息route1-简单{[[778410]]}

     

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

     

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

     

13:30:42.741 [Camel(camel-1)线程#1-file://my_csv.csv]信息route1-简单{[[269041]]}

     

13:30:42.743 [骆驼(camel-1)线程#1-file://my_csv.csv]信息route1-简单{[[622768]]}

     

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

     

13:30:42.746 [Camel(camel-1)线程#1-file://my_csv.csv]信息route1-简单{[[169439]]}

     

13:30:42.747 [Camel(camel-1)线程#1-file://my_csv.csv]信息route1-简单{[[435246]]}

我的问题是,我想访问简单{[[[ value ]]}}中的值,但我不确定如何操作。

我之前所做的只是将其发送到进程并使用exchange.getBody().getIn()并从那里进行检查/投射,但是我想避免使用进程。

非常感谢所有帮助

1 个答案:

答案 0 :(得分:1)

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

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

由于INFO是默认设置,因此可以更快地完成操作

.log("${body}");

您也可以写文字

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