2016-04-22 13 views
0

以下のラクダルートを使用してファイルをポーリングしようとしています。 「GenricFileOperationFailedException caused by java.io.IOException: Pipe closedを取得メートル:Camel SFTP、quartz2コンポーネントが提供する:ファイルを取得できません:sftpから複数のファイルをポーリングするときに発生します

JaxbDataFormat dataFormat = new JaxbDataFormat(); 
dataFormat.setContext(JAXBContext.newInstance(MyBean.class)); 

    from(sftphost + sourcedirpath + 
          "?password=" + password 
         + "&username=" + userName 
         + "&include=" + filePattern 
         + "&localWorkDirectory=" + localWorkingDirectory 
         + "&flatten=true" 
         + "&delete=true" 
         + "&scheduler=quartz2" 
         + "&scheduler.cron=0/45 * * * * ?" 
         + "&stepwise=false" 
         + "&disconnect=true") 
       .onException(Exception.class) 
        .to(sftphost + errdirpath + "?password=" + password + "&username=" + userName+"&disconnect=true") 
        .handled(true) 
        .end() 
       .log(LoggingLevel.INFO, "Processing File : ${file:onlyname}").log(LoggingLevel.INFO, "Before Unmarshalling XML").unmarshal(dataFormat) 
       .log(LoggingLevel.INFO, "after UnMarshalling the XML").beanRef("service", "processData(${body}, ${file:name})") 
       .to(sftphost + processedDirPAth + "?password=" + password + "&username=" + userName+ "&disconnect=true"); 

私はquartz2スケジューラを使用する場合にのみ、私はこの問題に直面しています。上記のラクダルート は、ラクダルートで '& delay = 10000'パラメータを使用すると完全に正常に機能します。

エラースタックトレース:

2016-04-22 10:33:15,634 | WARN | terface_Worker-1 | SftpConsumer     ] 
    | ?          ? | 264 - 1.0.0.SNAPSHOT | Error processing file RemoteFile[/home/source/file_one.XML 
    ] due to Cannot retrieve file: /home/source/file_one.XML. Caused by: [org.apache.camel.component.file.GenericFileOperat 
    ionFailedException - Cannot retrieve file: /home/source/file_one.XML] 
    org.apache.camel.component.file.GenericFileOperationFailedException: Cannot retrieve file: /home/source/file_one.XML 
      at org.apache.camel.component.file.remote.SftpOperations.retrieveFileToFileInLocalWorkDirectory(SftpOperations.java:735)[264:myBundle:1.0.0.SNAPSHOT] 
      at org.apache.camel.component.file.remote.SftpOperations.retrieveFile(SftpOperations.java:591)[264:myBundle:1.0.0.SNAPSHOT] 
      at org.apache.camel.component.file.GenericFileConsumer.processExchange(GenericFileConsumer.java:396)[264:myBundle:1.0.0.SNAPSHOT] 
      at org.apache.camel.component.file.remote.RemoteFileConsumer.processExchange(RemoteFileConsumer.java:137)[264:myBundle:1.0.0.SNAPSHOT] 
      at org.apache.camel.component.file.GenericFileConsumer.processBatch(GenericFileConsumer.java:211)[264:myBundle:1.0.0.SNAPSHOT] 
      at org.apache.camel.component.file.GenericFileConsumer.poll(GenericFileConsumer.java:175)[264:myBundle:1.0.0.SNAPSHOT] 
      at org.apache.camel.impl.ScheduledPollConsumer.doRun(ScheduledPollConsumer.java:174)[264:myBundle:1.0.0.SNAPSHOT] 
      at org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:101)[264:myBundle:1.0.0.SNAPSHOT] 
      at org.apache.camel.pollconsumer.quartz2.QuartzScheduledPollConsumerJob.execute(QuartzScheduledPollConsumerJob.java:59)[264:myBundle:1.0.0.SNAPSHOT] 
      at org.quartz.core.JobRunShell.run(JobRunShell.java:202)[264:myBundle 
    :1.0.0.SNAPSHOT] 
      at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)[264:myBundle:1.0.0.SNAPSHOT] 
    Caused by: 4: 
      at com.jcraft.jsch.ChannelSftp._get(ChannelSftp.java:1160)[264:myBundle:1.0.0.SNAPSHOT] 
      at com.jcraft.jsch.ChannelSftp.get(ChannelSftp.java:1006)[264:myBundle:1.0.0.SNAPSHOT] 
      at com.jcraft.jsch.ChannelSftp.get(ChannelSftp.java:984)[264:myBundle 
    :1.0.0.SNAPSHOT] 
      at org.apache.camel.component.file.remote.SftpOperations.retrieveFileToFileInLocalWorkDirectory(SftpOperations.java:724)[264:myBundle:1.0.0.SNAPSHOT] 
      ... 10 more 
    Caused by: java.io.IOException: Pipe closed 
      at java.io.PipedInputStream.read(PipedInputStream.java:307)[:1.8.0_45] 
      at java.io.PipedInputStream.read(PipedInputStream.java:377)[:1.8.0_45] 
      at com.jcraft.jsch.ChannelSftp.fill(ChannelSftp.java:2882)[264:myBundle:1.0.0.SNAPSHOT] 
      at com.jcraft.jsch.ChannelSftp.header(ChannelSftp.java:2908)[264:myBundle:1.0.0.SNAPSHOT] 
      at com.jcraft.jsch.ChannelSftp._get(ChannelSftp.java:1025)[264:myBundle:1.0.0.SNAPSHOT] 
      ... 13 more 

私はラクダのルートで閉じられるようにしている他のIOストリームを使用していません。

+0

私はどのバージョンのCamelをお使いですか?このエラーは私に非常によく似ています.. –

+0

応答に感謝します。私が使っているラクダのバージョンは2.15.2です。 –

+0

@RaminArabbagheri –

答えて

0

これは、ターゲットマシンのSFTPユーザーのアクセス許可の問題のようです。詳細についてはhttps://winscp.net/eng/docs/sftp_codes#code_4をご覧ください。

Camel FTP2コンポーネントでSSLコンテキストがすぐに設定/初期化されず、ポーリングを開始する前に少し時間を延ばす必要があるため、遅延が発生している可能性があります。

+0

あなたの応答をありがとう、私はパラメータ 'scheduler = quartz2'を使用する場合にのみ、この問題が発生し、遅延パラメータ '&delay = 15000'をmycamelルートで使用するとこの問題は発生しません。 –

関連する問題