Mule讓你覆蓋傳輸實現的某些部分。在這種情況下,您應該覆蓋org.mule.transport.file.FileMessageReceiver
,特別是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);
}
}
}
然後,將創建使用您的信息接收器
<file:connector name="inboundFileConnector">
<service-overrides messageReceiver="org.mule.transport.file.MyFileMessageReceiver"/>
</file:connector>
最後,您可以使用此連接器,在您的配置文件的任何入境端點的連接器。您只需指定輪詢頻率,即可完成。
HTH
這裏我們不能重寫listFiles()方法,因爲方法是使用默認的訪問說明符。那麼有沒有其他方法可以做到這一點?謝謝 – user2181841 2013-04-05 07:36:53
一個不那麼優雅的解決方案是用'FileMessageReceiver'的代碼擴展'AbstractPollingMessageReceiver'。對於'lisfFiles()'方法,在答案中使用自定義代碼。我會更新我的答案,以糾正這個 – Daniel 2013-04-05 12:41:17
嘿我解決了它通過覆蓋文件消息接收器的民意調查()現在代碼工作正常...謝謝你這麼多的時間ñ幫助.... – user2181841 2013-04-08 09:07:04