0

我有这个需要不时执行的同步管道(假设每 30 分钟一次):

  1. 连接到一个ftp;
  2. 从文件夹 A 中读取一个.json文件(单个文件);
  3. 解组文件(Class A)的内容并将其添加到路由上下文中;
  4. 从文件夹 B中读取所有.fixedlenght文件(多个文件)(preMove:processingFolder,move:doneFolder,moveFailed:errorFolder);
  5. 解组文件的内容 ( Class B) 并执行一些逻辑;
  6. 从文件夹 C中读取所有.xml文件(多个文件)(preMove:processingFolder,move:doneFolder,moveFailed:errorFolder);
  7. 解组文件的内容 ( Class C) 并执行一些逻辑;
  8. 结束路线。

它是使用 Java DSL 创建的单个管道。如果发生错误,则进程停止。我真的很难用骆驼来创造这个。有可能还是我需要手动处理?我创建了一些演示,但它们都没有正常工作。

任何帮助将不胜感激。

4

2 回答 2

1

我将通过以下方式处理此问题:

  1. 您读取文件的 FTP 的所有接口都是单独的路由。他们的工作只是拿起文件。他们不处理解析或转换。

  2. 然后为实际接收数据、解析和转换创建单独的路由。

  3. 最后是传送数据并传送到您的最终目的地的传送路线。

这样你可以自定义错误处理,更容易找出问题所在,更容易改变一个部分而不影响一切,你可以在几个不同的部分重用路由。

于 2016-05-17T12:24:19.710 回答
1

您描述消息管道的方式似乎有3条单独的路由,每个路由处理您的FTP服务器中的不同文件夹。你可以有一个计时器,每 30 分钟触发一次所有 3 个。FTP 组件源自 Camel 的文件组件,这里有很多有用的参数可以帮助您的路由逻辑。

对于您的 3 条路线中的每条路线,您将拥有如下内容:

from("ftp://foo@myserver?include=*.xml&preMove=processingFolder&move=doneFolder&moveFailed=errorFolder")
    .unmarshal()
    ...

您可以在此处找到有关按扩展名过滤文件的更多信息

于 2016-05-16T22:19:58.170 回答