Hi

Are destination1 and destination2 file endpoints?
If they are then camel will optimize and rename the local file and so
when destination2 is executed then the file has been renamed and is
not in the local directory anymore.

If you really want to do this multicast and 2 file destinations then
set renameUsingCopy=true

On Wed, Mar 23, 2022 at 3:08 AM thomas wong <wong...@live.com> wrote:
>
> Hi,
>
>
> I am having trouble getting the file pickup from SFTP site and delivered to 
> multiple destinations. The destination1 able to successfully received the 
> file. It seems when I use "localworkdirectory" the destination2 will not be 
> able to receive any file. I noticed that when I removed the 
> localworkdirectory it seems both endpoints able get the file.
>
> The problem is I need localworkdirectory since the file I pick up from SFTP 
> is quite large.
>
> I would receive a Java exception - "Caused by: java.io.FileNotFoundException: 
> /tmp/file100MB_multicast_22Mar.csv (No such file or directory)"
>
> Is it a bug when using localworkdirectory?
> Any workaround?
>
> Code snippet
> ------------------
>
> from("sftp://u...@xxx.yyy?localworkdirectory=/tmp&binary=true&stepwise=false&autoCreate=false";).routeId(JSONProperties.get("name")).choice().when(body().isNull())
>                         .log("${routeId}  :: ${date:now:HH:mm:ss:SS} Nothing 
> here.. ")
>                         .otherwise()
>                         .log("Start Transfer : ${headers.CamelFileName}")
>                         .multicast()
>                         .to(destination1)
>                         .log("Destination 1 done: ${headers.CamelFileName} ")
>                         .to(destination2)
>                         .log("Destination 2 done: ${headers.CamelFileName} ");
>
> Version
> ----------
> camel-spring-boot-dependencies = 3.11.1
> OpenJDK = 8
> spring-boot-starter-parent = 2.5.0
>
> Message log:
> -----------------
> 2022-03-23 02:00:17.474  INFO 17323 --- [amel-1_Worker-1] 
> o.a.c.p.e.DefaultErrorHandler            : Failed delivery for (MessageId: 
> 18B7BF1BC7F0158-0000000000000005 on ExchangeId: 
> 18B7BF1BC7F0158-0000000000000005). On delivery attempt: 0 caught: 
> org.apache.camel.component.file.GenericFileOperationFailedException: Cannot 
> store file: /destination2/file100MB_multicast_22Mar.csv.tmp
>
> org.apache.camel.component.file.GenericFileOperationFailedException: Cannot 
> store file: /destination2/file100MB_multicast_22Mar.csv.tmp
>         at 
> org.apache.camel.component.file.FileOperations.storeFile(FileOperations.java:408)
>  ~[camel-file-3.11.1.jar!/:3.11.1]
>         at 
> org.apache.camel.component.file.GenericFileProducer.writeFile(GenericFileProducer.java:290)
>  ~[camel-file-3.11.1.jar!/:3.11.1]
>         at 
> org.apache.camel.component.file.GenericFileProducer.processExchange(GenericFileProducer.java:173)
>  ~[camel-file-3.11.1.jar!/:3.11.1]
>         at 
> org.apache.camel.component.file.GenericFileProducer.process(GenericFileProducer.java:78)
>  ~[camel-file-3.11.1.jar!/:3.11.1]
>         at 
> org.apache.camel.support.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:66)
>  ~[camel-support-3.11.1.jar!/:3.11.1]
>         at 
> org.apache.camel.processor.SendProcessor.process(SendProcessor.java:172) 
> ~[camel-core-processor-3.11.1.jar!/:3.11.1]
>         at 
> org.apache.camel.impl.engine.CamelInternalProcessor.process(CamelInternalProcessor.java:398)
>  [camel-base-engine-3.11.1.jar!/:3.11.1]
>         at 
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryTask.doRun(RedeliveryErrorHandler.java:804)
>  [camel-core-processor-3.11.1.jar!/:3.11.1]
>         at 
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$RedeliveryTask.run(RedeliveryErrorHandler.java:712)
>  [camel-core-processor-3.11.1.jar!/:3.11.1]
>         at 
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:179)
>  [camel-base-engine-3.11.1.jar!/:3.11.1]
>         at 
> org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:64)
>  [camel-base-engine-3.11.1.jar!/:3.11.1]
>         at org.apache.camel.processor.Pipeline.process(Pipeline.java:184) 
> [camel-core-processor-3.11.1.jar!/:3.11.1]
>         at 
> org.apache.camel.impl.engine.CamelInternalProcessor.process(CamelInternalProcessor.java:398)
>  [camel-base-engine-3.11.1.jar!/:3.11.1]
>         at 
> org.apache.camel.component.file.GenericFileConsumer.processExchange(GenericFileConsumer.java:492)
>  [camel-file-3.11.1.jar!/:3.11.1]
>         at 
> org.apache.camel.component.file.remote.RemoteFileConsumer.processExchange(RemoteFileConsumer.java:156)
>  [camel-ftp-3.11.1.jar!/:3.11.1]
>         at 
> org.apache.camel.component.file.GenericFileConsumer.processBatch(GenericFileConsumer.java:245)
>  [camel-file-3.11.1.jar!/:3.11.1]
>         at 
> org.apache.camel.component.file.GenericFileConsumer.poll(GenericFileConsumer.java:206)
>  [camel-file-3.11.1.jar!/:3.11.1]
>         at 
> org.apache.camel.support.ScheduledPollConsumer.doRun(ScheduledPollConsumer.java:190)
>  [camel-support-3.11.1.jar!/:3.11.1]
>         at 
> org.apache.camel.support.ScheduledPollConsumer.run(ScheduledPollConsumer.java:107)
>  [camel-support-3.11.1.jar!/:3.11.1]
>         at 
> org.apache.camel.pollconsumer.quartz.QuartzScheduledPollConsumerJob.execute(QuartzScheduledPollConsumerJob.java:61)
>  [camel-quartz-3.11.1.jar!/:3.11.1]
>         at org.quartz.core.JobRunShell.run(JobRunShell.java:202) 
> [quartz-2.3.2.jar!/:na]
>         at 
> org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) 
> [quartz-2.3.2.jar!/:na]
> Caused by: org.apache.camel.InvalidPayloadException: No body available of 
> type: java.io.InputStream but has value: 
> RemoteFile[file100MB_multicast_22Mar.csv] of type: 
> org.apache.camel.component.file.remote.RemoteFile on: 
> file100MB_multicast_22Mar.csv. Caused by: Error during type conversion from 
> type: java.io.File to the required type: java.io.InputStream with value 
> /tmp/file100MB_multicast_22Mar.csv due to java.io.FileNotFoundException: 
> /tmp/file100MB_multicast_22Mar.csv (No such file or directory). 
> Exchange[18B7BF1BC7F0158-0000000000000005]. Caused by: 
> [org.apache.camel.TypeConversionException - Error during type conversion from 
> type: java.io.File to the required type: java.io.InputStream with value 
> /tmp/file100MB_multicast_22Mar.csv due to java.io.FileNotFoundException: 
> /tmp/file100MB_multicast_22Mar.csv (No such file or directory)]
>         at 
> org.apache.camel.support.MessageSupport.getMandatoryBody(MessageSupport.java:125)
>  ~[camel-support-3.11.1.jar!/:3.11.1]
>         at 
> org.apache.camel.component.file.FileOperations.storeFile(FileOperations.java:387)
>  ~[camel-file-3.11.1.jar!/:3.11.1]
>         ... 21 common frames omitted
> Caused by: org.apache.camel.TypeConversionException: Error during type 
> conversion from type: java.io.File to the required type: java.io.InputStream 
> with value /tmp/file100MB_multicast_22Mar.csv due to 
> java.io.FileNotFoundException: /tmp/file100MB_multicast_22Mar.csv (No such 
> file or directory)
>         at 
> org.apache.camel.converter.CamelBaseBulkConverterLoader.convertTo(CamelBaseBulkConverterLoader.java:65)
>  ~[camel-base-3.11.1.jar!/:3.11.1]
>         at 
> org.apache.camel.impl.converter.CoreTypeConverterRegistry.doConvertTo(CoreTypeConverterRegistry.java:461)
>  ~[camel-base-3.11.1.jar!/:3.11.1]
>         at 
> org.apache.camel.impl.converter.CoreTypeConverterRegistry.doConvertTo(CoreTypeConverterRegistry.java:356)
>  ~[camel-base-3.11.1.jar!/:3.11.1]
>         at 
> org.apache.camel.impl.converter.CoreTypeConverterRegistry.convertTo(CoreTypeConverterRegistry.java:203)
>  ~[camel-base-3.11.1.jar!/:3.11.1]
>         at 
> org.apache.camel.component.file.GenericFileConverter.genericFileToInputStream(GenericFileConverter.java:131)
>  ~[camel-file-3.11.1.jar!/:3.11.1]
>         at 
> org.apache.camel.component.file.GenericFileConverterLoader.lambda$registerConverters$0(GenericFileConverterLoader.java:46)
>  ~[camel-file-3.11.1.jar!/:3.11.1]
>         at 
> org.apache.camel.support.SimpleTypeConverter.convertTo(SimpleTypeConverter.java:101)
>  ~[camel-support-3.11.1.jar!/:3.11.1]
>         at 
> org.apache.camel.impl.converter.CoreTypeConverterRegistry.doConvertTo(CoreTypeConverterRegistry.java:478)
>  ~[camel-base-3.11.1.jar!/:3.11.1]
>         at 
> org.apache.camel.impl.converter.CoreTypeConverterRegistry.doConvertTo(CoreTypeConverterRegistry.java:356)
>  ~[camel-base-3.11.1.jar!/:3.11.1]
>         at 
> org.apache.camel.impl.converter.CoreTypeConverterRegistry.mandatoryConvertTo(CoreTypeConverterRegistry.java:272)
>  ~[camel-base-3.11.1.jar!/:3.11.1]
>         at 
> org.apache.camel.support.MessageSupport.getMandatoryBody(MessageSupport.java:123)
>  ~[camel-support-3.11.1.jar!/:3.11.1]
>         ... 22 common frames omitted
> Caused by: java.io.FileNotFoundException: /tmp/file100MB_multicast_22Mar.csv 
> (No such file or directory)
>         at java.io.FileInputStream.open0(Native Method) ~[na:1.8.0_312]
>         at java.io.FileInputStream.open(FileInputStream.java:195) 
> ~[na:1.8.0_312]
>         at java.io.FileInputStream.<init>(FileInputStream.java:138) 
> ~[na:1.8.0_312]
>         at 
> org.apache.camel.converter.IOConverter.toInputStream(IOConverter.java:81) 
> ~[camel-base-3.11.1.jar!/:3.11.1]
>         at 
> org.apache.camel.converter.CamelBaseBulkConverterLoader.doConvertTo(CamelBaseBulkConverterLoader.java:134)
>  ~[camel-base-3.11.1.jar!/:3.11.1]
>         at 
> org.apache.camel.converter.CamelBaseBulkConverterLoader.convertTo(CamelBaseBulkConverterLoader.java:56)
>  ~[camel-base-3.11.1.jar!/:3.11.1]
>         ... 32 common frames omitted
>


-- 
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2

Reply via email to