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, both endpoints able get the file.
I need to use localworkdirectory since I pick up large file from SFTP site.
Is it a bug when using localworkdirectory or something wrong with my code? Any workaround?
Code snippet
from("sftp://user@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
| Name | 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]
:
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]
... 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