有没有办法使用骡子请求者获取最旧的文件?

时间:2015-10-08 09:45:56

标签: mule mule-component

我有一个要求,我需要首先使用mule requester处理最旧的文件。在mule requester的入站属性中我们得到时间戳。从那里我们可以获取文件的时间。但是如何处理它?<​​/ p>

2 个答案:

答案 0 :(得分:0)

您需要一个自定义组件来执行此操作,因为没有办法开箱即用(至少在Mule 3.7.2中)。

确实FileMessageRequester调用FileMessageDispatcher.getNextFile来检索要在轮询目录中处理的下一个文件。这种方法依赖于私有方法来选择要处理的第一个文件,这种方法没有做任何排序(也没有提供任何注入排序的选项),正如你可以看到here

答案 1 :(得分: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(); 
            }
        });