如何使用 Camel 和 Java DSL 创建具有多个连接 ftp 调用的路由?
How can I create a route with multiple connected ftp calls using Camel and Java DSL?
我有这个需要不时执行的同步管道(比如说每 30 分钟):
- 连接到 ftp;
- 从文件夹 A 中读取 .json 文件(单个文件);
- 解组文件内容 (
Class A
) 并将其添加到路由上下文;
- 从文件夹 B 中读取所有 .fixedlenght 个文件(多个文件)(preMove:processingFolder,move:doneFolder,moveFailed:errorFolder);
- 解组文件内容 (
Class B
) 并做一些逻辑;
- 从文件夹C读取所有.xml个文件(多个文件)(preMove:processingFolder,move:doneFolder,moveFailed:errorFolder);
- 解组文件内容 (
Class C
) 并做一些逻辑;
- 结束路线。
它是使用 Java DSL 创建的单个管道。如果发生错误,该过程将停止。
我真的很难用骆驼来创造这个。有可能还是我需要手动处理?我创建了一些演示,但其中 none 个可以正常工作。
如有任何帮助,我们将不胜感激。
按照您描述消息管道的方式,让 3 条单独的路由各自处理 FTP 服务器中的不同文件夹似乎是有益的。您可以有一个计时器,每 30 分钟触发一次所有 3 个。 FTP 组件派生自 Camel 的 File Component,这里有很多有用的参数可以帮助您处理路由逻辑。
对于你的 3 条路线中的每一条,你都会有这样的东西:
from("ftp://foo@myserver?include=*.xml&preMove=processingFolder&move=doneFolder&moveFailed=errorFolder")
.unmarshal()
...
您可以找到有关按扩展名过滤文件的更多信息here
我将按以下方式处理此问题:
你读取文件的FTP的所有接口都是单独的路由。他们的工作只是拿起文件。它们不处理解析或转换。
然后创建单独的路由用于实际接收数据、解析和转换。
最后是将数据传送到您的最终目的地的传送路线。
通过这种方式,您可以自定义错误处理,更容易找出问题所在,更容易更改一个部分而不影响所有内容,并且您可以在多个不同部分重用路由。
我有这个需要不时执行的同步管道(比如说每 30 分钟):
- 连接到 ftp;
- 从文件夹 A 中读取 .json 文件(单个文件);
- 解组文件内容 (
Class A
) 并将其添加到路由上下文; - 从文件夹 B 中读取所有 .fixedlenght 个文件(多个文件)(preMove:processingFolder,move:doneFolder,moveFailed:errorFolder);
- 解组文件内容 (
Class B
) 并做一些逻辑; - 从文件夹C读取所有.xml个文件(多个文件)(preMove:processingFolder,move:doneFolder,moveFailed:errorFolder);
- 解组文件内容 (
Class C
) 并做一些逻辑; - 结束路线。
它是使用 Java DSL 创建的单个管道。如果发生错误,该过程将停止。 我真的很难用骆驼来创造这个。有可能还是我需要手动处理?我创建了一些演示,但其中 none 个可以正常工作。
如有任何帮助,我们将不胜感激。
按照您描述消息管道的方式,让 3 条单独的路由各自处理 FTP 服务器中的不同文件夹似乎是有益的。您可以有一个计时器,每 30 分钟触发一次所有 3 个。 FTP 组件派生自 Camel 的 File Component,这里有很多有用的参数可以帮助您处理路由逻辑。
对于你的 3 条路线中的每一条,你都会有这样的东西:
from("ftp://foo@myserver?include=*.xml&preMove=processingFolder&move=doneFolder&moveFailed=errorFolder")
.unmarshal()
...
您可以找到有关按扩展名过滤文件的更多信息here
我将按以下方式处理此问题:
你读取文件的FTP的所有接口都是单独的路由。他们的工作只是拿起文件。它们不处理解析或转换。
然后创建单独的路由用于实际接收数据、解析和转换。
最后是将数据传送到您的最终目的地的传送路线。
通过这种方式,您可以自定义错误处理,更容易找出问题所在,更容易更改一个部分而不影响所有内容,并且您可以在多个不同部分重用路由。