我有一个要求,我需要首先使用mule requester处理最旧的文件。在mule requester的入站属性中我们得到时间戳。从那里我们可以获取文件的时间。但是如何处理它?</ p>
答案 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();
}
});