ラバ

2017-11-16 17 views
1

にポーリング基づいてファイル名フィルタでSFTPからのファイルの読み込み私はコードの下に、私はここに直面していますラバ

<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の場所からファイルを読み込むために、ファイル名フィルタでグルーヴィーなスクリプトを使用していますそれは、それぞれの投票スケジュールで1つのファイルだけを読むことです。 しかし、私の期待は、それは各投票スケジュールのSFTP場所からフィルタの条件を満たすすべてのファイルを読む必要があります。

どうすればこの問題を解決できますか?おかげさまで

+0

SFTPポーラーを直接使用していないのはなぜですか? https://docs.mulesoft.com/mule-user-guide/v/3.9/sftp-connector –

+0

特定のファイル名のファイルをフィルタリングすることはできません。 Groovyスクリプトを使用して達成できます。 –

+0

はいそうです;)例を投稿します –

答えて

0

ポーリングにラップされたGroovyスクリプトに頼るのではなく、file:filename-wildcard-filterでSFTPインバウンドエンドポイントを使用することができます。例:

<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> 

related example in SFTP documentationを参照してください。

+0

1つの投票スケジュールですべてのファイルの処理を開始しますか? –

+0

はい、パターンを尊重して一度にすべてのファイルをポーリングします。自分で試してみてください;) –

+0

ピエールに感謝します。私はSFTPコネクタのfilename-wildcard-filterについて知らなかった。 –

関連する問題