我一直在使用Apache Camel做一些基本的东西,但现在我正在尝试创建一个路由,我可以让多个“消费者”到同一条路线,或者添加一个消费者到路由然后处理消息。
我的想法是让事件触发事件驱动的消费者,然后从ftp读取文件。我打算做这样的事情:
from("direct:processFile")
.from("ftp://localhost:21/folder?fileName=${body.fileName}") // etc.
.log("Start downloading file ${file:name}.")
.unmarshal().bindy(BindyType.Csv, MyFile.class)
.to("bean:fileProcessor")
.log("Downloaded file ${file:name} complete.");
所以我的想法是我有一个事件(例如直接或来自消息队列)具有“ fileName ”属性,然后使用该属性下载/使用带有该文件的文件来自ftp的名称。
我认为问题是在同一路由中有 from()。from(),但问题是如果我将ftp组件留在“to”中,那么我的队列事件将会写入ftp中的文件,与我想要的相反;它表现为产品而不是消费者。
是否有任何可能的方法来实现我想要做的事情,或者它与Camel的用途有什么冲突?
感谢您的帮助!
答案 0 :(得分:1)
答案 1 :(得分:-1)
这样的事情怎么样?
.from("direct:processFile")
.transform(simple("${body.fileName}"))
.from("ftp://localhost:21/folder?fileName=${body.fileName}") // etc.
.log("Start downloading file ${file:name}.")
.unmarshal().bindy(BindyType.Csv, MyFile.class)
.to("bean:fileProcessor")
.log("Downloaded file ${file:name} complete.");