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