动态添加的Camel路由未出现在InflightExchange中

时间:2015-07-02 10:06:45

标签: java apache-camel

我向现有的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选项),否则预期的行为,路由不会继续进行,因此资源尚未被考虑作为机上交流

那么,下一个问题是,如何检测组件是否正在下载文件?

1 个答案:

答案 0 :(得分:0)

如果您要检测FTP组件的下载时间,可以尝试启用streamDownload选项(请参阅component page)。这样,只要File组件正在读取流,就应该将其视为机上交换。