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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 ?