노새

2017-11-16 18 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 위치에서 파일을 읽을 파일 이름 필터 그루비 스크립트를 사용하고 있습니다 그것은 각 투표 일정에 대한 읽기 하나의 파일입니다. 그러나, 내 기대는 각 투표 일정에 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

하나의 설문 일정으로 모든 파일을 처리하기 시작합니까? –

+0

예, 패턴을 고려하여 모든 파일을 한 번에 폴링합니다. 직접 해보십시오;) –

+0

감사합니다. Pierre. SFTP 커넥터에서 파일 이름 - 와일드 카드 필터에 대해 알지 못했습니다. –