[英]Mule ESB SFTP connecter dynamic input Path
我想在Mule S FTP INBOUND Connector中提供来自数据库的输入路径,它将根据数据库Path拾取文件。 但是我无法解决这个问题; 这有可能吗...? 有人可以对此回答吗? 请。
在m子中使用轮询组件。 在poll组件内部添加一个Java组件。 并使Java类实现Callable。
在OnCall方法中,像这样创建一个自定义端点:
public Object onCall(MuleEventContext eventContext) throws Exception {
EndpointBuilder endpointBuilder = muleEventContext
.getMuleContext()
.getEndpointFactory()
.getEndpointBuilder(
protocol+"://" + username + ":"
+ password+ "@"
+ host + ":"+port
+ path );
InboundEndpoint inboundEndPoint = endpointBuilder
.buildInboundEndpoint();
现在,您可以从数据库中获取这些用户名和密码。 要么在数据库之上放置一个REST层,然后将Web服务公开以获取数据,然后使用HTTP客户端获取数据并动态填充用户名,密码,主机和路径。
您不能使用MEL定义SFTP将使用的路径。 但是,您可以按如下方式从属性文件加载路径。 HTH。
<sftp:endpoint name="SFTP-Endpoint"
connector-ref="SFTP" host="${sftp.host}" user="${sftp.user}"
password="${sftp.jdeBillingReportPassword}" port="${sftp.port}"
path="${sftp.path}" />
是的,可以通过编写常规脚本来实现。 在groovy脚本中,您可以引用flowVar(ex:imageRef),它将具有要检索的文件的路径:
<scripting:component doc:name="Script">
<scripting:script engine="Groovy">
<![CDATA[def ftpFileUri = "ftp://${ftp.username}:${ftp.password}@${ftp.host}/${ftp.path}" + message.getInvocationProperty('imageRef') + ".jpg";
muleContext.client.request(ftpFileUri, 30000L);]]>
</scripting:script>
</scripting:component>
对于您的情况,在此之前,您只需要查询数据库并将值存储在flowVar中。
同样,如果文件不存在,则可以在“异常策略”中捕获常规异常,并使用以下命令记录该异常:
<logger message="#[groovy:message.getExceptionPayload().getRootException().getMessage()]" level="ERROR" doc:name="Logger"></logger>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.