仅在调用直接组件时执行路由

时间:2019-02-15 08:29:04

标签: apache-camel spring-camel

我想在调用“直接”路由时解压缩文件。我从其他直接途径获得的文件名。

from("direct:unZipFile")
                .from("file:C:\\MYFILES\\File\\Unzipped\\?fileName=${header.fileName}&idempotent=true")
                .split(new ZipSplitter())
                .streaming()
                .to("file:C:\\MYFILES\\File\\Unzipped\\")
                .split(body().convertToString().tokenize("\n"))
                .transform()
                .simple("${in.body}")
                .end();

现在,当我调用直接组件时它正在工作,但它仍继续扫描目录并处理相同的文件。我知道上面的代码允许直接和文件组件触发,但我只希望它从“直接”组件执行,而我不能删除“文件”组件,因为仅读取文件即可。 / p>

3 个答案:

答案 0 :(得分:1)

您也可以尝试使用花粉

from("direct:unZipFile")
.pollEnrich.simple("file:C:\\MYFILES\\File\\Unzipped\\?fileName=${header.fileName}")
.split(new ZipSplitter())
.streaming()
...

答案 1 :(得分:0)

您可以使用consumerTemplate

split

答案 2 :(得分:0)

您也可以仅使用java.io.File设置消息正文,在其中用几行Java代码计算文件名,但是是的,否则pollEnrich是为此的EIP模式解决方案。