如何使用 Apache Camel 在集群环境中丰富从 SFTP 到 JMS 的文件路由中的消息?
How to enrich message in File Route from SFTP to JMS in clustered environment using Apache Camel?
我们将从 SFTP 读取文件并将员工放入数据库。
以下是XML结构
<employees>
<employee></employee>
<employee></employee>
<employee></employee>
<employees>
我认为的策略是:
- 从 SFTP 选择 XML 文件 ->
- 从 XML 获取员工编号 -> (24000 名员工)
- 根据员工编号从 "System 1 and System 2" 获取数据。 xml 文件一起在内存中 ->
- 从 XML 拆分员工 ->
- 将 "System 1 and System 2" 中的数据分配给每个员工 Exchange ->
- 将每个员工 XML 放入 JMS 队列(在集群环境中读取)
在上面的路线或路线 2(Jms 队列)中,Apache Camel 中是否有任何其他最佳策略来处理这种情况?
注:由于是集群环境;我们无法从服务器本身的 System1 和 System2 中获取数据,然后我们需要通过将批次 ID 分配给一个文件内容来保持跟踪。您也可以在其他集成中考虑这种情况
以上步骤可以通过
改进
- 通过并行处理(例如使用线程池)在第 4 步后加快您的进程
- 通过在步骤 3 之后释放核心线程来加强 SFTP 进程(例如使用 wireTap)
- 为防止数据丢失,存储交换到另一个持久存储(例如 JMS 队列)
- 应用程序的内存使用量会增加
如果第 3 步(从 "System 1 and System 2" 中获取数据)可以同时完成,则启动具有幂等性的多个应用程序实例(利用外部缓存或数据库)可能有助于处理大量文件。
我们将从 SFTP 读取文件并将员工放入数据库。
以下是XML结构
<employees>
<employee></employee>
<employee></employee>
<employee></employee>
<employees>
我认为的策略是:
- 从 SFTP 选择 XML 文件 ->
- 从 XML 获取员工编号 -> (24000 名员工)
- 根据员工编号从 "System 1 and System 2" 获取数据。 xml 文件一起在内存中 ->
- 从 XML 拆分员工 ->
- 将 "System 1 and System 2" 中的数据分配给每个员工 Exchange ->
- 将每个员工 XML 放入 JMS 队列(在集群环境中读取)
在上面的路线或路线 2(Jms 队列)中,Apache Camel 中是否有任何其他最佳策略来处理这种情况?
注:由于是集群环境;我们无法从服务器本身的 System1 和 System2 中获取数据,然后我们需要通过将批次 ID 分配给一个文件内容来保持跟踪。您也可以在其他集成中考虑这种情况
以上步骤可以通过
改进- 通过并行处理(例如使用线程池)在第 4 步后加快您的进程
- 通过在步骤 3 之后释放核心线程来加强 SFTP 进程(例如使用 wireTap)
- 为防止数据丢失,存储交换到另一个持久存储(例如 JMS 队列)
- 应用程序的内存使用量会增加
如果第 3 步(从 "System 1 and System 2" 中获取数据)可以同时完成,则启动具有幂等性的多个应用程序实例(利用外部缓存或数据库)可能有助于处理大量文件。