【发布时间】:2019-05-31 02:02:10
【问题描述】:
我在 DirA 中有 file1.jpg、file2.jpg、file3.jpg。 我在 DirB 中有 file1.json,file2.json,file3.json
如何创建一个 apache 骆驼文件路由,以便第一个路由从 DirA 中选择 file1.jpg ,处理并将 file1 名称传递给第二个路由,以便它可以读取 file1.json 和进程。
CamelContext context = new DefaultCamelContext();
context.addRoutes(new RouteBuilder() {
public void configure() {
from("file:///DirA/?noop=true"). bean(MyBean.class,"doSomeThingWithJPG(${file:absolute.path})").
from("file:///DirB/?noop=true&fileName=${file:name}.json").
bean(AnotherBean.class,"doSomeThingWithJSON(${file:absolute.path})") ;
}
})
第二个from (file:///) 组件也指向 DirA 中的文件,而不是 DirB 中的文件
【问题讨论】:
-
您想从 DirA 读取文件。您想对 DirB 中的文件做什么?是否要从 DirA 中读取并在 DirB 中创建文件?
-
@DariusX。我从 DirA 读取 file.jpg 并上传到 AWS s3。成功上传后,我想将一个 file.json 从 DirB 上传到 s3,其中包含有关 jpg 的元数据。这个元数据文件会触发 lambda 并且上游系统会拉取 jpg 文件。
-
啊!那么,为什么不让第二条路由简单地监听 DirB 中的所有/任何文件。每当 JSON 文件到达那里时,第二个路由就会处理它。它不需要事先知道名称。
-
@DariusX。我想确保 file1.jpg 已成功上传并且在上传元数据 file1.json 时可用。如果先上传 file1.json 并触发 lambda,则 file1.jpg 尚未上传,会导致问题。所以我需要一个序列,这样 Route1 先启动,然后再启动路由 2。我还需要一种从 route1 文件名部分传递给 route2 的方法
标签: apache-camel spring-camel eip