J'ai deux itinéraires qui exécutent une commande toutes les 2 secondes sur les différents serveurs et d'imprimer la sortie vers le même fichier:Camel - synchronisez itinéraires
camelCtx.addRoutes(new RouteBuilder() {
@Override
public void configure() {
from("ssh://username:[email protected]:port?delay=2&pollCommand=whoami")
.to("file:///tmp/?fileName=test.txt");
}
});
camelCtx.addRoutes(new RouteBuilder() {
@Override
public void configure() {
from("ssh://username:[email protected]:port?delay=2&pollCommand=whoami")
.to("file:///tmp/?fileName=test.txt");
}
});
Je voudrais être sûr que les deux voies ont été lancées à en même temps et également préfixer la sortie de chaque commande avec horodatage lorsque l'itinéraire a été démarré. Pour le deuxième problème que j'ai essayé processus personnalisé:
.process(exchange -> {
String body = exchange.getIn().getBody(String.class);
exchange.getIn().setBody(System.currentTimeMillis() + " " + body);
})
mais il donne évidemment le moment où la sortie a été reçue.
Je peux aussi exécuter date +%s%N
avant d'exécuter la commande, de sorte que le paramètre pollCommand
ressemblerait à ceci:
...&pollCommand=date +%s%N;whoami"...
mais dans ce cas, il est le moment où la connexion au serveur est déjà établie, ce qui est un peu trop tard ...
Alors, comment obtenir l '«heure de début» de l'itinéraire?
Et aussi comment synchroniser plusieurs routes afin qu'elles s'exécutent simultanément?