我向现有的CamelContext添加了一个路由,
exchange.getContext().addRoutes(new RouteBuilder() {
@Override
public void configure() throws Exception {
from("sftp://...")
.routeId("test-dy-route")
...
.to("file://...");
}
});
当我尝试获得此路线的空中交换次数时,会返回零。对于相同的路线,状态将正确返回,即" STARTED"
ServiceStatus status = context.getRouteStatus("test-dy-route");
int inflightExchanges = context.getInflightRepository().size("test-dy-route");
在运行时(使用Eclipse)监视上下文对象时,它没有路由""与 InflightRepository 关联。不确定,可能是什么原因。同时,我可以在日志中看到此路由上正在处理的交换。我需要没有机上交换来按照要求停止路线。
编辑:这实际上并不是一个问题,但是除非已经下载了来自ftp服务器的远程文件(使用localWorkDirectory选项),否则预期的行为,路由不会继续进行,因此资源尚未被考虑作为机上交流。那么,下一个问题是,如何检测组件是否正在下载文件?
答案 0 :(得分:0)
如果您要检测FTP组件的下载时间,可以尝试启用streamDownload
选项(请参阅component page)。这样,只要File组件正在读取流,就应该将其视为机上交换。