我想从特定目录以特定时间间隔一次轮询 10 个文件。如果该目录中存在 250 个文件 Mule 文件入站应该从 250 个文件中取出 10 个文件并处理它们,然后再处理 10 个文件等。我有轮询频率值“10000”
我试图像这样应用 maxThreadsActive 但它不起作用
<file:connector>
<receiver-thread-profile maxThreadsActive=10/>
</file:connector>
我想从特定目录以特定时间间隔一次轮询 10 个文件。如果该目录中存在 250 个文件 Mule 文件入站应该从 250 个文件中取出 10 个文件并处理它们,然后再处理 10 个文件等。我有轮询频率值“10000”
我试图像这样应用 maxThreadsActive 但它不起作用
<file:connector>
<receiver-thread-profile maxThreadsActive=10/>
</file:connector>
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>
最后,您可以将此连接器与配置中的任何文件入站端点一起使用。您只需指定轮询频率即可。
高温高压