2014-03-03 50 views
0

我在我的代碼中使用循環。我知道,對第一to發生循環中斷在Apache Camel: Route loop is lost when choice is added to the path駱駝:添加到內部循環多個

說現在,我有我想要的循環結束之前已經通過不同渠道路由的路由定義。例如:

.loop(simple("${header." + FILE_COUNT + "}")) 
    .to("direct:file-iterator") 
.end() 

from("direct:file-iterator").id("file-iterator") 
            .to("direct:read-file-checksum")  
            .to("direct:file-unzip") 

是否有這種情況的什麼解決辦法是在我的代碼只有先得到第一次迭代後執行?

+0

請您重新解釋您的問題,我不明白。 –

+0

是的,我的問題是,在第一次迭代中,路由是直接完成的:file-iterator-> direct:read-file-checksum-> direct:file-unzip。但在第二次迭代中,只有直接執行:file-iterator-> direct:read-file-checksum路徑纔會被執行。 – saylee

+0

在將消息路由到「direct:file-iterator」之前,您需要更新交換。 –

回答

1

這條路線:

public void configure() { 
    from("direct:start") 
     .loop(2) 
     .log("CamelLoopIndex = ${header.CamelLoopIndex}") 
     .to("direct:file-iterator") 
     .end(); 

    from("direct:file-iterator") 
     .id("file-iterator") 
     .log(" in file-iterator") 
     .to("direct:read-file-checksum") 
     .to("direct:file-unzip"); 

    from("direct:read-file-checksum") 
     .log(" in read-file-checksum"); 

    from("direct:file-unzip") 
     .log(" in direct:file-unzip"); 
    } 
} 

引出以下的輸出:

[main] route1       INFO CamelLoopIndex = 0 
[main] file-iterator     INFO in file-iterator 
[main] route2       INFO  in read-file-checksum 
[main] route3       INFO  in direct:file-unzip 
[main] route1       INFO CamelLoopIndex = 1 
[main] file-iterator     INFO in file-iterator 
[main] route2       INFO  in read-file-checksum 
[main] route3       INFO  in direct:file-unzip 

這是我所期望的那樣。如果此路線與您的設置相對應,那麼您的問題不是loop問題,您應該查看direct:file-unzip路線。