Mule consente di eseguire l'override di alcune parti dell'implementazione di trasporto. In questo caso, è necessario eseguire l'override di org.mule.transport.file.FileMessageReceiver
, in particolare il metodo listFiles()
.
public class MyFileMessageReceiver extends FileMessageReceiver
{
private static final MAX_FILES = 10;
@Override
List<File> listFiles() throws MuleException
{
try
{
List<File> files = new ArrayList<File>();
this.basicListFiles(readDirectory, files);
if(files.isEmpty())
return NO_FILES;
if(files.size() > MAX_FILES)
return files.subList(0, MAX_FILES);
else
return files;
}
catch (Exception e)
{
throw new DefaultMuleException(FileMessages.errorWhileListingFiles(), e);
}
}
}
Poi, creare un connettore che utilizzerà il ricevitore messaggio
<file:connector name="inboundFileConnector">
<service-overrides messageReceiver="org.mule.transport.file.MyFileMessageReceiver"/>
</file:connector>
Infine è possibile utilizzare questo connettore con qualsiasi file endpoint in entrata nella vostra configurazione. Devi solo specificare la frequenza di polling e il gioco è fatto.
HTH
Qui non è possibile eseguire l'override del metodo listFiles(), poiché il metodo è con l'identificatore di accesso predefinito. Quindi c'è un altro modo per fare questo thats? Grazie – user2181841
Una soluzione -non così elegante- è quella di estendere 'AbstractPollingMessageReceiver' con il codice di' FileMessageReceiver'. Per il metodo 'lisfFiles()' usa il codice personalizzato nella risposta. Aggiornerò la mia risposta per correggere questo – Daniel
hey l'ho risolto sovrascrivendo il poll() del ricevente del messaggio di file n ora il codice sta funzionando bene ... Grazie mille per il tuo tempo n aiuto .... – user2181841