Apache camel 自定义Camel组件-在FTP使用者中调用FTP

Apache camel 自定义Camel组件-在FTP使用者中调用FTP,apache-camel,Apache Camel,我正在尝试创建一个自定义Camel组件 它适用于与FTP通信的旧系统(与文件进行对话以获得更好的描述)。因此,我的消费者扩展了FtpConsumer。 它将轮询文件,效果很好 然后我需要做的是创建另一个FTP连接——从技术上讲,是到同一台机器,但路径不同。 在我的实验中,我使用了一个具有构造URI的消费者模板来获取另一个文件(基于轮询文件的内容) 这已经在一个高水平的工作,并抓住了我需要的文件。 有人能确认这是不是一件危险的事吗 根据文件: FTP使用者(具有相同的端点)不支持并发(备份FTP客

我正在尝试创建一个自定义Camel组件

它适用于与FTP通信的旧系统(与文件进行对话以获得更好的描述)。因此,我的消费者扩展了
FtpConsumer
。 它将轮询文件,效果很好

然后我需要做的是创建另一个FTP连接——从技术上讲,是到同一台机器,但路径不同。 在我的实验中,我使用了一个具有构造URI的消费者模板来获取另一个文件(基于轮询文件的内容)

这已经在一个高水平的工作,并抓住了我需要的文件。 有人能确认这是不是一件危险的事吗

根据文件:

FTP使用者(具有相同的端点)不支持并发(备份FTP客户端不是线程安全的)。 您可以使用多个FTP使用者从不同的端点进行轮询。只有一个端点不支持并发使用者

这会在这里产生影响吗? 有没有更好的方法建立这个辅助FTP连接?尤其是更安全的方式

当然,我想要的文件确实会被检索到,我可以将其进一步传递到驼峰路径,但是,当我在处理FTP流文件时,在字节级处理(按位计算等)时,我发现了一些问题,我想知道这是否与此有关

所以我想我的主要问题是,在一个消费者中调用多个FTP命令的安全方法是什么


如果我正在做的工作应该有效,那么可能我需要一个关于我对该数据的按位操作的新问题(基本上,只要只生成一个FTP get,它们就可以正常工作-即消费者对轮询的文件运行进程。但是如果我轮询一个文件,然后使用该文件来获取另一个文件,则该文件处理在低级别失败-就好像存在内存/线程问题一样)。

建立另一个FTP连接(同一台机器,不同的路径),您可以在路线中使用


FTP使用者(具有相同终结点)不支持并发(支持的FTP客户端不是线程安全的)。您可以使用多个FTP使用者从不同终结点进行轮询。只有一个终结点不支持并发使用者


本部分说明是否有多个FTP使用者指向同一端点(即同一台机器,同一路径)。它们可能会竞争同一文件,并导致重复/不完整/空文件被消耗。

若要建立另一个FTP连接(同一台机器,不同路径),您可以在路由中使用


FTP使用者(具有相同终结点)不支持并发(支持的FTP客户端不是线程安全的)。您可以使用多个FTP使用者从不同终结点进行轮询。只有一个终结点不支持并发使用者


本部分说明是否有多个FTP使用者指向同一端点(即同一台机器、同一路径)。他们可能会竞争同一个文件,并导致重复/不完整/空文件被消耗。

我在工作中也遇到了同样的问题-我很想听听关于这个问题的任何想法。我在工作中也遇到了同样的问题-我很想听听关于这个问题的任何想法。是否可以在组件内部创建骆驼路线?或者是否有其他方法如何在组件中进行类似于pollRich的操作?我认为生产者和消费者模板是我可以在组件内部创建的唯一东西(已经在Camel上下文中了)-我希望我是错的,有一种简单的方法我还没有注意到。你可以通过路由生成器创建路由。FTP组件中没有类似PollRich的方法。你想尝试的可以通过路由完成,为什么是组件?组件是包装一个路由生成器不知道的自定义协议。例如S3与HTTP不同的是,我们有一个S3组件。我们有一个基于FTP的协议,需要做不同的事情。我们需要提供该组件,以便路由建设者可以使用它,所以我们在“路由”之下工作。我挖掘的越多,我越认为消费者模板可能更好在这种情况下可以使用。在自定义组件中使用使用者模板可能会使另一个文件的删除/移动操作不受控制。另一种方法是在单个连接中完成任务(即,执行另一个相对路径移动和收集文件)是否可以在组件内部创建Camel路由?或者是否有其他方法可以在组件内部执行类似pollRich的操作?我认为生产者和消费者模板是我可以在组件内部创建的唯一内容(已经在Camel上下文中)-我希望我是错的,有一种简单的方法我还没有注意到。你可以通过路由生成器创建路由。FTP组件中没有类似PollRich的方法。你想尝试的可以通过路由完成,为什么是组件?组件是包装一个路由生成器不知道的自定义协议。例如S3与HTTP不同的是,我们有一个S3组件。我们有一个基于FTP的协议,需要做不同的事情。我们需要提供该组件,以便路由建设者可以使用它,所以我们在“路由”之下工作。我挖掘的越多,我越认为消费者模板可能更好在这种情况下可以使用。在自定义组件中使用使用者模板可能会使另一个文件的删除/移动操作不受控制。另一种方法是在单个连接中完成任务(即,执行另一个相对路径移动和收集文件)