Groovy 在mule中以轮询为基础使用文件名过滤器从SFTP读取文件
我使用带有文件名过滤器的groovy脚本,使用下面的代码在轮询的基础上从SFTP位置读取文件Groovy 在mule中以轮询为基础使用文件名过滤器从SFTP读取文件,groovy,mule,sftp,polling,Groovy,Mule,Sftp,Polling,我使用带有文件名过滤器的groovy脚本,使用下面的代码在轮询的基础上从SFTP位置读取文件 <poll doc:name="Poll"> <schedulers:cron-scheduler expression="${payment.schedule}"/> <scripting:transformer doc:name="Groovy"> <scripting:scr
<poll doc:name="Poll">
<schedulers:cron-scheduler expression="${payment.schedule}"/>
<scripting:transformer doc:name="Groovy">
<scripting:script engine="Groovy">
<scripting:text><![CDATA[
def endpointBuilder = muleContext.endpointFactory.getEndpointBuilder(
"sftp://${sftp.user}:${sftp.password}@${sftp.host}:${sftp.port}/${sftp.root.path}")
endpointBuilder.addMessageProcessor(new org.mule.routing.MessageFilter(new org.mule.transport.file.filters.FilenameWildcardFilter('payment_*')))
def inboundEndpoint = endpointBuilder.buildInboundEndpoint()
inboundEndpoint.request(3000L) ;
]]></scripting:text>
</scripting:script>
</scripting:transformer>
</poll>
我在这里面临的问题是,它在每个投票时间表上只读取一个文件。
然而,我的期望是,它应该在每个轮询计划中从SFTP位置读取满足筛选条件的所有文件
我怎样才能做到这一点?
谢谢。您可能希望将SFTP入站端点与
file:filename通配符过滤器一起使用,而不是依赖封装在轮询中的Groovy脚本。例如:
<sftp:inbound-endpoint host="${sftp.host}" port="${sftp.port}" path="/home/test/sftp-files" user="${sftp.user}" password="${sftp.password}">
<file:filename-wildcard-filter pattern="payment_*"/>
</sftp:inbound-endpoint>
看 为什么不直接使用SFTP轮询器?因为它不支持筛选具有特定文件名的文件。这可以使用groovy脚本实现。是的,它可以;)我将发布一个示例,它会在一个轮询计划中开始处理所有文件吗?是的,它会根据您的模式一次轮询所有文件。你自己试试看;)谢谢你,皮埃尔。我不知道SFTP连接器中的文件名通配符过滤器。很好,底层类可能与您在Groovy脚本中定义的类相同,但它是XML内置的,并有官方文档记录。如果这有助于您解决问题,请随意投票和/或接受;)