Верблюд Apache получает значение от body () - PullRequest
0 голосов
/ 22 мая 2019

Это мой верблюжий основной класс и мой верблюжий путь

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) thread # 1 - file: //my_csv.csv] INFO route1 - simple {[[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) thread # 1 - file: //my_csv.csv] INFO route1 - simple {[[803306]]}

13: 30: 42.739 [Camel (camel-1) thread # 1 - file: //my_csv.csv] INFO route1 - simple {[[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) thread # 1 - file: //my_csv.csv] INFO route1 - simple {[[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]]}

У меня вопрос, я хочу получить доступ к значению внутри простого {[[ value ]]}, но я не совсем уверен, как.

То, что я сделал ранее, это просто отправил его процессу и использовал exchange.getBody().getIn() и проверил / произвел оттуда, но я хотел попытаться избежать использования процесса.

Любая помощь очень ценится

1 Ответ

1 голос
/ 23 мая 2019

Чтобы зарегистрировать тело сообщения, вы должны использовать

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

И поскольку ИНФО по умолчанию используется быстрее,

.log("${body}");

И вы также можете написать текст

.log("The message contains: ${body}");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...