check文件是使用聚合器通过camel的所有路由处理的

ioekq8ef  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(380)

我有一个camel应用程序,我从ftp源读取文件。然后文件经过多条路径,比如一条路径到cassandra存储,一条路径处理数据并将数据透视到kafka主题等
我想标记文件处理时,它通过所有路线,并达到最后。这样我就可以基于文件名构建一个处理完成的日志。
我可以想到的一种方法是实现aggregator,其中每个路由将在exchange头中发送完成通知,然后根据aggregator中的完成条件逻辑,我将该文件标记为已处理。
如何用java编写这样的聚合器?

vx6bjr1n

vx6bjr1n1#

您可以尝试使用多播。

from("direct:start")
    .multicast()
        .to("direct:a","direct:b")
    .end()
    // Won't run until the sub routes are complete
    .process(new MarkFileAsCompletedProcessor())
    .log("Finished multicast");

from("direct:a")
    .log("Processing a")
    .to("mock:endOfA");

from("direct:b")
    .log("Processing b")
    .to("mock:endOfB");

相关问题