2013-03-19 79 views
0

上述情况我需要将大文件大小发送到多播端点。我的路线如下。我试图发送一个100 MB或更多的文件,从abcd端点到xyz,从xyz到efg和测试队列。我可以将整个100MB从abcd发送到xyz,但不能从xyz发送到efg和测试队列。它是只发送一些文件和其他文件在route.Also我得到3种错误的fuseesb日志组播丢失:发送大文件到骆驼的多播端点时发生错误

1. org.apache.camel.component.file.GenericFileOperationFailedException: Cannot store file: D:\xyz\samplebigfiles.txt at org.apache.camel.component.file.FileOperations.storeFile(FileOperations.java:264)[147:org.apache.camel.camel-core:2.10.0.fuse-71-047] 

2. Caused by: java.io.FileNotFoundException: D:\abcd\samplebigfiles.txt (The process cannot access the file because it is being used by another process) 
    at java.io.FileInputStream.open(Native Method)[:1.6.0_22] 

3. java heap space error 


<route> 
    <from uri="file:///D:/abcd" /> 
    <to uri="file:///D:/xyz" /> 
</route> 
<route> 
    <from uri="file:///D:/xyz" /> 
    <multicast> 
    <to uri="file://D:/efg" /> 
    <to uri="jms:queue:test" /> 
    </multicast> 
</route> 

请建议我一些解决方案来解决它。

回答

0

当你使用文件,你就需要考虑读锁定策略的使用,以避免读取文件,而另一个进程正在写这等看到更多细节的骆驼文件文档:http://camel.apache.org/file2

而且您不应该通过JMS队列发送100MB文件。消息传送不适用于处理这种大型有效负载。例如Apache ActiveMQ有关于此的常见问题解答:http://activemq.apache.org/can-i-send-really-large-files-over-activemq.html

并注意Apache Camel不支持ActiveMQ提供的特殊BlobMessage类型。虽然这个功能很少被使用。并将其实施为将文件存储在带外,并使用FTP传输有效负载。

和FTP服务器的发言,同时传输这么大的载荷,使用FTP/SCP或其他一些方法可能是更好的。骆驼具有FTP和SCP组件:

+0

谢谢您的答复克劳斯,我想在我的路线使用readLock = markerFile与33.6MB的文件进行检查。它仍然在提出同样的错误。此外,从端点创建的锁永远出现,到端点的文件端点出现(显示0kB或34,467KB)并消失。另一方面,没有消息被推送到队列(这是多播的另一端点)。我完全同这个输出混淆了。 – Rampo 2013-03-21 08:32:59

相关问题