在一个camel路由器中,我们检查是否存在一个标志文件,只有在它存在时才会继续。这是我们打算使用的代码,但它不起作用。
String flagFilePath = "file:" + flagFileFolder
+ "?noop=true&idempotent=false&fileName=" + flagFileName;
from(flagFilePath)
.choice()
.when(header("CamelFileName").isNotNull())
.log(LoggingLevel.TRACE, "Flag file exists.")
.otherwise()
.log(LoggingLevel.INFO, "Flag file does not exist.");
我知道otherwise
,因为如果文件不存在,则不会触发整个路由器。
是否有一种简单的方法可以检查文件是否存在而无需手写谓词?
(注意:正如您在上面的代码中所看到的,我需要这个条件才能触发警告日志。)
答案 0 :(得分:0)
我将重新发布@ ClausIbsen的评论作为答案。声誉应该全部归@ClausIbsen所有。
将Predicate
添加到文件URI可以解决我的问题。
但是,我决定在我的代码中使用 from("timer://a-processor?period=" + timerPeriod)
.routeId("ATimer")
.choice()
.when(exchange -> Files.exists(Paths.get(flagFileFolder, flagFileName)))
.log(LoggingLevel.DEBUG, "Flag file exists.")
.otherwise()
.log(LoggingLevel.DEBUG, "Flag file does not exist.")
.end();
。
balanceFrame.getContentPane().setBackgroundColor(Color.RED);
在我的情况下,我发现它在语义上更具可读性和更清晰。