Mule pozwala unieważnić niektóre elementy realizacji transportu. W takim przypadku należy zastąpić metodę org.mule.transport.file.FileMessageReceiver
, konkretnie 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);
}
}
}
Następnie należy utworzyć łącznik, który będzie używany odbiornik wiadomość
<file:connector name="inboundFileConnector">
<service-overrides messageReceiver="org.mule.transport.file.MyFileMessageReceiver"/>
</file:connector>
Wreszcie można użyć tego złącza z dowolnego punktu końcowego przychodzących plików w swojej konfiguracji. Musisz tylko określić częstotliwość odpytywania i gotowe.
HTH
Tutaj nie możemy zastąpić metody listFiles(), ponieważ metoda ma domyślny specyfikator dostępu. Czy istnieje jakiś inny sposób na zrobienie tego thaings? Dzięki – user2181841
A -nie eleganckim rozwiązaniem jest rozszerzenie 'AbstractPollingMessageReceiver' o kod' FileMessageReceiver'. Dla metody 'lisfFiles()' użyj niestandardowego kodu w odpowiedzi. Będę aktualizować moją odpowiedź, by poprawić to – Daniel
hej i rozwiązałem to przez nadpisanie odpytania() odbiorcy wiadomości z pliku n teraz kod działa dobrze ... Dziękuję bardzo za ur czas n pomocy .... – user2181841