J'ai rencontré des problèmes avec l'adaptateur de fichiers dans Spring Integration et je n'ai aucune idée car je n'en avais jamais entendu parler auparavant. En utilisant le code ci-dessous pour lire un fichier du dossier FTP et l'écrire dans le répertoire local.Spring Integration - L'adaptateur de fichiers ne fonctionne pas après la première tentative
Le problème est après que le serveur est démarré, il fonctionne très bien pour la première fois. Mais les invocations suivantes invoquent l'adaptateur de fichier mais le processus de déplacement de fichier ne se produit pas.
Cron Le timing est: 0/20 * * * *.
Une idée de ce comportement étrange?
<int:channel id="txtFilesIn">
<int:dispatcher task-executor="executor"/>
</int:channel>
<int:channel id="txtFilesOut">
<int:dispatcher task-executor="executor"/>
</int:channel>
<int-file:inbound-channel-adapter id="txtFilesIn"
directory="${FILE_IN}"
filename-pattern="*.csv"
auto-startup="true">
<int:poller cron="${CRON_TAB}" ></int:poller>
</int-file:inbound-channel-adapter>
<int:service-activator input-channel="txtFilesIn"
output-channel="txtFilesOut"
ref="apiCommonService"
method="readFile"/>
<int-file:outbound-channel-adapter id="txtFilesOut"
directory="${FILE_OUT}"
delete-source-files="true"/>
EDIT 1:
modifié comme celui-ci
<int-file:inbound-channel-adapter id="txtFilesIn"
directory="${FILE_IN}"
auto-startup="true"
local-filter="acceptAll">
<int:poller cron="${CRON_TAB}" ></int:poller>
</int-file:inbound-channel-adapter>
<bean id="acceptAll" class="org.springframework.integration.file.filters.AcceptAllFileListFilter" />
Il fonctionne bien maintenant.
L'adaptateur de fichier s'exécute une fois toutes les 10 minutes et je viens de placer à nouveau un fichier dans le dossier IN. Cela devrait fonctionner, et c'est pourquoi le sondage est là, IIRC! Mais ça n'arrive pas et je ne sais pas pourquoi! – Rajkumar
'Je viens de replacer un fichier'. C'est une partie importante (!!!). Voir 'AcceptOnceFileListFilter'. Il ne permet pas de traiter le même fichier à nouveau. La logique de filtrage est basée sur le nom du fichier. Donc, vous devez placer un fichier avec un nom différent ou désactiver ce 'AcceptOnceFileListFilter' depuis le' '' pour autant que je vois que vous utilisez 'delete-source-files =" true "' on le côté sortant. –
Modification du code avec acceptAllFilter et fonctionne correctement. Merci pour l'aide. – Rajkumar