0

マルチキャストエンドポイントに大きなファイルサイズを送信する必要があるシナリオに直面しています。私のルートは次のとおりです。100MB以上の単一のファイルをabcdエンドポイントからxyzに、xyzからefgおよびテストキューに送信しようとしています。100MB全体をabcdからxyzに送信できましたが、xyzからefgおよびテストキューに送信することはできませんでした。送信しているファイルはごくわずかで、マルチキャストルートに他のファイルがありません。また、fuseesbログに次の3種類のエラーが発生しています。

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>

それを解決するための解決策を教えてください。

4

1 に答える 1

1

ファイルを操作するときは、別のプロセスがファイルを書き込んでいる間などにファイルを読み取らないようにするために、使用する読み取りロック戦略を考慮する必要があります。詳細については、Camel ファイルのドキュメントを参照してください: http://camel.apache.org /file2

また、JMS キューを介して 100MB のファイルを送信しないでください。メッセージングは​​、このような大きなペイロードで動作するようには設計されていません。たとえば、Apache ActiveMQ には、これに関する FAQ があります: http://activemq.apache.org/can-i-send-really-large-files-over-activemq.html

また、Apache Camel は、ActiveMQ が提供する特別な BlobMessage タイプをサポートしていないことに注意してください。ただし、この機能はほとんど使用されていません。また、ファイルを帯域外に保存し、FTP を使用してペイロードを転送するように実装されています。

そして、そのような大きなペイロードを転送する際の FTP について言えば、FTP / SCP またはその他の方法を使用する方がおそらく良いでしょう。Camels には FTP および SCP コンポーネントがあります。

于 2013-03-19T14:37:06.130 に答える