[Camel] Traitement des erreurs dans une route
Bonjour,
Tout d'abord voici ce que je cherche à faire :
Récupérer via FTP des fichiers XML "serveurFTP", les unmarshaller avec JAX-B et exécuter un Processor pour finalement archiver le fichier XML source.
Si traitement OK : archivage du fichier XML dans serveurFTP/ARCHIVE
Si traitement KO : archivage du fichier XML dans serveurFTP/ERREURS
Ci dessous la configuration de ma route Camel :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
String ftpOpts= "&delay=10000&recursive=false&filter=#transporteurFilter&delete=true&consumer.bridgeErrorHandler=true";
String routeEnCours = "ftp://"+getUrl()+"/"+getEnCoursDirectory()+"?username="+getUser()+"&password="+getPassword();
String routeErreur = "ftp://"+getUrl()+"/"+getErreurDirectory()+"?username="+getUser()+"&password="+getPassword();
String routeArchive = "ftp://"+getUrl()+"/"+getArchiveDirectory()+"?username="+getUser()+"&password="+getPassword();
// Redirection en cas d'erreur
onException(Exception.class)
.handled(true)
.to(routeErreur);
// Configuration de la route
from(routeEnCours+ftpOpts)
.unmarshal(dataFormat)
.processRef("myProcessor")
.to(routeArchive); |
Le problème rencontré:
En cas d'erreur à n'importe qu'elle étape du workflow je veux que le fichier XML source soit déplacé du repertoire "encours" vers le repertoire "erreur". De même à la fin du traitement le fichier XML doit être déplacé dans "archive". MAIS selon à qu'elle étape on se situe on perd la notion de "fichier XML source", avant le unmarshalling on a un Stream, après le unmarshalling on a un objet Java, etc... Du coup ma stratégie me parait compromise.
Avez vous une idée de comment procéder ? :calim2: