2013-03-21 12 views
5

Chcę odpytywać 10 plików jednocześnie w określonych odstępach czasu od określonego katalogu. Jeśli istnieje 250 plików w tym folderze, przychodzące pliki Mule powinny zająć 10 plików na 250 i przetworzyć je ponownie 10 plików itp. Mam wartość częstotliwości odpytywania "10000"Konfiguracja odpytywania przychodzących plików Mule

Próbowałem zastosować maxThreadsActive w ten sposób, ale nie robi praca

<file:connector> 
<receiver-thread-profile maxThreadsActive=10/> 
</file:connector> 

Odpowiedz

12

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

+0

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

+0

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

+0

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

Powiązane problemy