我已经和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的用途有什么冲突?
谢谢您的帮助!
2 回答
感谢comment from Claus Ibsen我找到了我想要的东西,我需要的组件和它的工作原理是Content Enricher .
这是适合我的路线:
这样的事怎么样?