Apache camel 骆驼同步路线

Apache camel 骆驼同步路线,apache-camel,Apache Camel,我有两条路径,每2秒在不同的服务器上执行一次命令,并将输出打印到同一个文件: camelCtx.addRoutes(new RouteBuilder() { @Override public void configure() { from("ssh://username:password@host1:port?delay=2&pollCommand=whoami") .to("file:///tmp/?fileName=test.txt")

我有两条路径,每2秒在不同的服务器上执行一次命令,并将输出打印到同一个文件:

camelCtx.addRoutes(new RouteBuilder() {
    @Override
    public void configure() {
        from("ssh://username:password@host1:port?delay=2&pollCommand=whoami")
        .to("file:///tmp/?fileName=test.txt");
    }
});
camelCtx.addRoutes(new RouteBuilder() {
    @Override
    public void configure() {
        from("ssh://username:password@host2:port?delay=2&pollCommand=whoami")
        .to("file:///tmp/?fileName=test.txt");
    }
});
我希望确保这两个路由是同时启动的,并且在路由启动时,在每个命令的输出前加上时间戳。对于第二个问题,我尝试了自定义流程:

.process(exchange -> {
    String body = exchange.getIn().getBody(String.class);
    exchange.getIn().setBody(System.currentTimeMillis() + " " + body);
})
但它显然给出了接收输出的时间。 我还可以在执行命令之前执行date+%s%N,因此pollCommand参数如下所示:

...&pollCommand=date +%s%N;whoami"...
但在这种情况下,是已经建立到服务器的连接的时候了,这有点太晚了

那么,如何获得路线的“开始时间”?
以及如何同步多个路由以使它们同时执行?

如果您指的是路由上的exchange camel消息启动/创建的时间,则可以从exchange属性访问该信息

例如,通过骆驼处理器,您可以执行以下操作:

Date created = exchange.getProperty(Exchange.CREATED_TIMESTAMP, Date.class);
您可以使用该信息构建一个文件名,您可以使用头文件Exchange.file_name设置该文件名,然后该文件名将覆盖端点uri中配置的文件名,因此您可以包含时间戳