我试图在 apache Camel 中使用循环来处理从数据库获取的一些数据,以防内存不足。但是,处理完所有数据后,我需要将它们写入文件,所以我使用“.end()”结束循环并使用.to()到另一条路由写入文件,但这似乎是最后一步也在循环中,并且已多次写入文件。
from("seda:start")
.loopDoWhile(header("loopflag"))
.to()//handle data
.end()
.to("seda:generateFile");
from("seda:generateFile")
.to(...)
最佳答案
这应该有效!并且它在我使用 Camel 2.17.x 进行的简短测试中有效。您使用什么版本的 Camel?
尝试在循环内以及结束循环后放置日志语句,以验证循环的行为是否符合您的描述。
from("seda:start")
.loopDoWhile(header("loopflag"))
.log("must be logged for every loop cycle")
.to()//handle data
.end()
.log("must only be logged once per input message")
.to("seda:generateFile");
我在 from
中使用了直接端点,在 to
中使用了模拟端点,但这应该没有什么区别。
关于java - 我很难确定 Loop While DO 的作用范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57583598/