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

pub*_*Mee 4 ftp apache-camel

这个Camel路由应该开始从Ftp-Server读取文件:

from("sftp://user@...")
Run Code Online (Sandbox Code Playgroud)

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

from("direct:myRoute1")
Run Code Online (Sandbox Code Playgroud)

哪个是最好的方法来执行相同的操作并从具有FTP读取功能的第一个操作开始?就像是:

from("direct:myRoute2")
.from("sftp://user@...")
.autoStartup(false)
Run Code Online (Sandbox Code Playgroud)

?这不起作用.在手动-JMX触发器之后没有文件被ftp读取.我猜两个"从"开始路由并行工作,因此启动"direct:myRoute2"不会触发FTP.

Kann我把FTP-URI放在另一个组件中,而不是"from",以便在from("direct:myRoute2")之后启动FTP-Read?

BTW:这是一条单独的路线,与其他路线无关.

谢谢

Cla*_*sen 5

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

然后检查控制总线EIP,它允许从其他路线启动路线

这个常见问题解答谈到了停止路线,但开始会是类似的

CamelContext上还有用于启动路由的API,或者您可以使用JMX.


Ram*_*eri 5

你需要的是Poll Enrich:

from("direct:myRoute2")
.pollEnrich("ftp://localhost")
.to("mock:result");
Run Code Online (Sandbox Code Playgroud)

现在触发直接(无论你发送给它)和ftp消费者启动.