我想从mule S FTP INBOUND Connector中的数据库给出输入路径,它将根据数据库路径获取文件。 但我无法解决这个问题; 这可能与否......? 有人可以请你回答吗? 请。
答案 0 :(得分:2)
在mule中使用民意调查组件。 在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();
现在可以从DB获取这些用户名和密码。 将REST层放在DB之上并公开Webservices以获取数据并使用HTTP客户端获取数据并动态填充用户名,密码,主机和路径。
答案 1 :(得分:0)
您无法使用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}" />
答案 2 :(得分:0)
是的,通过编写一个groovy脚本是可能的。 在groovy脚本中,您可以引用一个flowVar(例如: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中。
如果文件不存在,你可以在&#34;异常策略中捕获groovy异常&#34;并记录:
<logger message="#[groovy:message.getExceptionPayload().getRootException().getMessage()]" level="ERROR" doc:name="Logger"></logger>