104.3. 移動および削除操作
移動または削除操作は、ルーティングが完了した後 (ポストコマンド) に実行されます。そのため、Exchange
の処理中、ファイルはまだ受信トレイフォルダーにあります。
これを例で説明しましょう。
from("file://inbox?move=.done").to("bean:handleOrder");
from("file://inbox?move=.done").to("bean:handleOrder");
ファイルが inbox
フォルダーにドロップされると、ファイルconsumer はこれに気づき、handleOrder
Bean にルーティングされる新しい FileExchange
を作成します。次に、Bean は File
オブジェクトを処理します。この時点で、ファイルはまだ inbox
フォルダーにあります。Bean が完了してルートが完了すると、file consumer は移動操作を実行し、ファイルを .done
サブフォルダーに移動します。
move および preMove オプションは、ディレクトリー名と見なされます (ただし、File 言語 や Simple などの式を使用する場合は、式の評価の結果をファイル名として使用します。たとえば、以下のように設定した場合、
move=../backup/copy-of-${file:name}
move=../backup/copy-of-${file:name}
File 言語 を使用しています。つまり、使用するように返されたファイル名を使用しています)。これは、相対または絶対のいずれかになります。相対の場合、ディレクトリーは、ファイルが消費されたフォルダー内のサブフォルダーとして作成されます。
デフォルトでは、Camel は消費されたファイルを、ファイルが消費されたディレクトリーに相対的な .camel
サブフォルダーに移動します。
処理後にファイルを削除する場合、ルートは次のようになります。
from("file://inobox?delete=true").to("bean:handleOrder");
from("file://inobox?delete=true").to("bean:handleOrder");
処理 前 にファイルを移動する 事前 移動操作が導入されました。これにより、処理される前にこのサブフォルダーに移動されるときに、どのファイルがスキャンされたかをマークできます。
from("file://inbox?preMove=inprogress").to("bean:handleOrder");
from("file://inbox?preMove=inprogress").to("bean:handleOrder");
pre の動きと通常の動きを組み合わせることができます。
from("file://inbox?preMove=inprogress&move=.done").to("bean:handleOrder");
from("file://inbox?preMove=inprogress&move=.done").to("bean:handleOrder");
したがって、この状況では、ファイルは処理中は inprogress
フォルダーにあり、処理後は .done
フォルダーに移動されます。