Apache Camel多个消费者

时间:2017-11-22 16:10:00

标签: ftp apache-camel

我一直在使用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 个答案:

答案 0 :(得分:1)

感谢comment from Claus Ibsen我找到了我想要的东西,我需要的组件是Content Enricher

以下是适合我的路线:

16
8
48
3

答案 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.");