我在代码中使用循环。我知道,如Apache Camel: Route loop is lost when choice is added to the path
中所述,循环会在第一个to
出现时中断
现在,我有一个路由定义,我想在循环结束之前在不同的通道上进行路由。例如:
.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 :(得分: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
路线。