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

Mule ESB SFTP连接器动态输入路径,mule,Mule,我想在mule的FTP入站连接器中给出来自数据库的输入路径,它将根据数据库路径在其中拾取文件。 但我无法解决这个问题; 这是否可能。。。? 有谁能回答这个问题吗? 请。您不能使用MEL定义SFTP将使用的路径。但是,您可以从属性文件加载路径,如下所示。嗯 <sftp:endpoint name="SFTP-Endpoint" connector-ref="SFTP" host="${sftp.host}" user="${sftp.user}" password="${sf

我想在mule的FTP入站连接器中给出来自数据库的输入路径,它将根据数据库路径在其中拾取文件。 但我无法解决这个问题; 这是否可能。。。? 有谁能回答这个问题吗?
请。

您不能使用MEL定义SFTP将使用的路径。但是,您可以从属性文件加载路径,如下所示。嗯

<sftp:endpoint name="SFTP-Endpoint"
    connector-ref="SFTP" host="${sftp.host}" user="${sftp.user}"
    password="${sftp.jdeBillingReportPassword}" port="${sftp.port}"
    path="${sftp.path}" />

是的,可以通过编写groovy脚本来实现。 在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中

此外,如果文件不存在,您可以在“异常策略”中捕获groovy异常,并使用以下内容记录它:


在mule中使用轮询组件。 在poll组件中添加一个Java组件。 并使Java类实现可调用

在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层,公开Web服务以获取数据,然后使用HTTP客户端获取数据并动态填充用户名、密码、主机和路径。

这不是答案。。。。。!先生,我知道这一点,但我想根据数据库路径选择文件。。!您可以在数据库路径之后使用请求程序模块。这样你就可以在流中间得到文件了。有关此支票的详细信息:。先生,你能解释一下吗。。。!我想从数据库获取sftp输入路径。。。!当然,使用正确的查询在流中添加数据库组件以获取路径。一旦你得到了它,你可以使用我上面发布的groovy脚本来检索ftp文件。先生,但我不能在SFTP之前使用数据库组件,因为如果我可以这样做,那么mule就无法拾取文件,因为SFTP变成了出站SFTP。那么,你能告诉我我现在能做什么吗?不要使用SFTP组件,只需放置一个groovy块,然后粘贴上面提到的脚本。你需要根据自己的需要调整它。