Mule文件入站轮询配置

use*_*841 5 mule

我想从特定目录以特定时间间隔一次轮询10个文件.如果该目录中存在250个文件Mule文件入站应该从250个中取出10个文件然后再处理它们10个文件等.我有轮询频率值"10000"

我尝试像这样应用maxThreadsActive,但它不起作用

<file:connector>
<receiver-thread-profile maxThreadsActive=10/>
</file:connector>
Run Code Online (Sandbox Code Playgroud)

Dan*_*iel 12

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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,创建一个将使用您的消息接收器的连接器

<file:connector name="inboundFileConnector"> 
    <service-overrides messageReceiver="org.mule.transport.file.MyFileMessageReceiver"/> 
</file:connector>
Run Code Online (Sandbox Code Playgroud)

最后,您可以将此连接器与配置中的任何文件入站端点一起使用.您只需指定轮询频率就可以了.

HTH