2015-10-08 2 views
0

У меня есть требование, когда мне нужно сначала обрабатывать старый файл, используя mule requester.In Входящее свойство от запрашивающего мула мы получаем штамп времени. Оттуда мы можем получить время файла. Но как его обрабатывать?Есть ли способ получить старейший файл с помощью реквестера mule?

ответ

0

Для этого вам понадобится настраиваемый компонент, потому что нет возможности сделать это из коробки (по крайней мере, до Mule 3.7.2).

Действительно FileMessageRequester звонит FileMessageDispatcher.getNextFile, чтобы получить следующий файл для обработки в опросном каталоге. Этот метод использует частный метод для выбора первого файла для обработки, метод, который не делает никакого заказа (и не предлагает какой-либо опции для закачивания заказов), как вы можете видеть here.

+0

Могу ли я использовать класс перехватчика для изменения последовательности? – Anurag

+0

Да, вы могли бы, это взломать, но с помощью инструмента, такого как Byteman, позволит вам изменить поведение «FileMessageDispatcher.getFirstFile», чтобы вернуть первое по времени. –

+0

Я нашел где-то использовать OlderFirstComparator, предоставляемый в конечной точке. Но он не возвращает старый файл в первую очередь? – Anurag

0

Я нахожу свой ответ. Вот фрагмент кода, чтобы получить упорядоченное сообщение mule по метке времени файла.

DefaultMessageCollection test =(DefaultMessageCollection) message; 
     List<MuleMessage> theList = new ArrayList<MuleMessage>(); 
     MuleMessage[] msg=test.getMessagesAsArray(); 
     for (MuleMessage muleMessage : msg) { 
      theList.add(muleMessage); 

     } 

     Collections.sort(theList, new Comparator<MuleMessage>(){ 
      public int compare(MuleMessage obj1, MuleMessage obj2) { 
       return ((Long)(obj1.getInboundProperty("timestamp"))).intValue()-((Long)(obj2.getInboundProperty("timestamp"))).intValue(); 
      } 
     }); 
Смежные вопросы