J'utilise le lot de printemps + intégration de printemps sftp sur mon projet. Je ne veux pas que le téléchargement soit déclenché au démarrage de l'application. Je veux que le processus de téléchargement est déclenché à l'étape 1 et continuer step2 après tous les fichiers télécharger à howt local, pas sûr de mettre en œuvre cetteintégration de printemps sftp: comment déclencher l'action de téléchargement manuellement et faire d'autres choses après le téléchargement terminé?
Répondre
Vous devez utiliser <int-sftp:outbound-gateway>
avec la commande MGET
:
La charge utile du message résultant à partir d'une opération
mget
est un objetList<File>
- une liste d'objets fichier, chacun représentant un fichier récupéré.Le répertoire distant est fourni dans l'en-tête
file_remoteDirectory
et le modèle pour les noms de fichiers est fourni dans l'en-têtefile_remoteFile
.
En Java DSL, il ressemble à:
.handle(Sftp.outboundGateway(sessionFactory(), AbstractRemoteFileOutboundGateway.Command.MGET,
"payload")
.options(AbstractRemoteFileOutboundGateway.Option.RECURSIVE)
.regexFileNameFilter("(subSftpSource|.*1.txt)")
.localDirectoryExpression("'" + getTargetLocalDirectoryName() + "' + #remoteDirectory")
.localFilenameExpression("#remoteFileName.replaceFirst('sftpSource', 'localTarget')"))
où le payload
est une expression Spel pour l'évaluation de répertoire distant. Dans ce cas, il est vraiment une charge utile de message de demande:
String dir = "sftpSource/";
registration.getInputChannel().send(new GenericMessage<>(dir + "*"));
Si votre répertoire distant est statique et ne change pas du lot, vous pouvez l'utiliser comme LiteralExpression
-expresion="'myRemoteDir'"
dans la définition XML.
Étant donné que le résultat de cette commande MGET est un List<File>
, vous devez envisager d'utiliser Splitter
comme étape suivante.
Salut @Gary, j'ai essayé la passerelle sortante avec la commande mget sur [ce post] (https://stackoverflow.com/questions/46707544/how-to-use-sftp-outbound-gateway-mget-command -to-download-files), je veux utiliser java config mais je suis toujours confronté à un problème, j'ai lu les docs et l'exemple de github, mais je n'arrive toujours pas à le résoudre, pouvez-vous donner mget exampe avec la configuration java? TIA –