簡體   English   中英

Apache Camel 進程方法沒有被調用

[英]Apache Camel process method is not getting called

我有一個包含大約 20 條記錄的 csv 文件。 我的目標是讀取 csv 文件逐條記錄將其轉換為 XML 並將 XML 作為消息發送到 ActiveMQ 隊列。 我正在使用 Apache Camel 執行此操作。

第一步:讀取 csv 文件並使用 Apache Camel 將其轉換為 XML。

下面是代碼:

    CamelContext _ctx = new DefaultCamelContext(); 
            _ctx.addRoutes(new RouteBuilder() {

                public void configure() throws Exception {
                    System.out.println("Inside configure method.");
                    from("file:src/main/resources/data-sample.csv")
                    .process(new MyTransform())
                    .to("file:src/main/resources/fileName=emp.xml");
                }

            });

            _ctx.start();
             Thread.sleep(4000);
            _ctx.stop();

class MyTransform implements Processor {

    public void process(Exchange exchange) throws Exception {

        System.out.println("In Process method");

        String myString = exchange.getIn().getBody(String.class);
        String[] lineSeparator = myString.split(System.getProperty("line.separator"));
        StringBuffer sb = new StringBuffer();

        for (String lineData : lineSeparator){

            String[] commaSeparator = lineData.split(",");
            sb.append("<equityFeeds>");
            sb.append("<externalTransactionId>" + commaSeparator[0].toString() + "</externalTransactionId>");
            sb.append("<clientId>" + commaSeparator[1].toString() + "</clientId>");
            sb.append("<securityId>" + commaSeparator[2].toString() + "</securityId>");
            sb.append("<transactionType>" + commaSeparator[3].toString() + "</transactionType>");
            sb.append("<transactionDate>" + commaSeparator[4].toString() + "</transactionDate>");
            sb.append("<sourceSystem>" + commaSeparator[5].toString() + "</sourceSystem>");
            sb.append("<priorityFlag>" + commaSeparator[6].toString() + "</priorityFlag>");
            sb.append("</equityFeeds>");

        }

        System.out.println("MyProcessor complete");
        exchange.getIn().setBody(sb.toString());

    }   

}   

在輸出中它只打印

里面配置方法。

未調用 process 方法。 為什么? 怎么了? 請指導我。 這太煩人了。 請幫忙。

只需說from("file:src/main/resources/")作為其起始目錄。 如果您只想獲取特定文件,請說from("file:src/main/resources?fileName=data-sample.csv")

此外,您的應用程序僅運行 4 秒,因為您只為此睡覺。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM