繁体   English   中英

Mule ESB SFTP连接器动态输入路径

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM