Apache Camel FTP - 如何手动启动路由

Apache Camel FTP - How to start the route manually

这条 Camel 路由应该从 Ftp-Server:

开始读取文件
from("sftp://user@...")

现在,我不希望它自动启动、轮询或类似的。 这应该手动启动(外部,JMX)。 我还有其他通过 MBean 触发的路由,我为此使用了直接标签:

from("direct:myRoute1")

使用 FTP-read 功能执行相同操作并作为第一个操作开始的最佳方法是什么?类似于:

from("direct:myRoute2")
.from("sftp://user@...")
.autoStartup(false)

? 这是行不通的。在手动 JMX 触发器之后,没有文件被 ftp 读取。我猜两个 "from" 并行启动路由,因此启动 "direct:myRoute2" 不会触发 FTP.

Kann 我将 FTP-URI 放在 "from" 以外的另一个组件中,以便在 from("direct:myRoute2")?

顺便说一句:这是一条单独的路线,与其他路线没有任何联系。

谢谢

阅读有关如何将路由配置为不自动启动的文档:

然后查看允许从其他路由启动路由的控制总线EIP

这个 FAQ 讨论了停止路线,但开始是相似的

CamelContext上也有API来启动路由,也可以使用JMX。

您需要的是 Poll Enrich:

from("direct:myRoute2")
.pollEnrich("ftp://localhost")
.to("mock:result");

现在触发直接(无论您向其发送什么)并且 ftp 消费者启动。