2016-06-22 7 views
0

私の使用例は、新しいファイルのリストをローカルディレクトリで定期的にポーリングしてから、1つの接続でFTPサーバーにアップロードすることです。次のようにキャメルのルートは春XMLで定義されていますApache Camel Batch FTPアップロードをアップロードしてから切断します。

<route> 
    <from uri="file:data/inbox?noop=true&amp;delay=1000&amp;maxMessagesPerPoll=3" /> 
    <to uri="ftp:uid:[email protected]:21/data?disconnect=false"/> 
</route> 

ルートはFTP接続がFTPサーバーのタイムアウト私の接続まで接続を保持することを除いて、うまく機能しています。バッチ内の最後のファイルがアップロードを完了したときに、同じ接続を再利用してファイルのバッチをアップロードし、その後すぐに接続を閉じることを望みます。どのようにキャメルでこれを達成することができますか?

答えて

2

これは現在できません。自分で切断するためのコードを書く必要があります。

Camel-ftp:https://issues.apache.org/activemq/browse/CAMELでこれを強化するためにJIRAをログに書き留めてください。例えば、disconnectOnBatchCompleteを解除する新しいオプションです。

+0

ご返信ありがとうございます。私はJIRAのケースを作成しました。https://issues.apache.org/jira/browse/CAMEL-10083 – xlogger

0

方法があるかもしれませんが、かわいいです。

cronSchedulePolicyに基づいてルートをラップすることができます。 1時間に1回ルートを開始し、ディレクトリをポーリングしてファイルを送信するとします。その後、単にstop()を追加します。停止がxml dslでまったく同じであるかどうかは不明です。あるいは、onExchangeComplete(new Processor(StopProcessor(routeId))と書いて、そのプロセッサの中にexchange.getContext.stopRoute(routeid)経由でルートを停止することもできます。これはあなたの要求に応じてこれを行うことができます。

<route> 
    <from uri="file:data/inbox?noop=true&amp;delay=1000&amp;maxMessagesPerPoll=3" /> 
    <to uri="ftp:uid:[email protected]:21/data?disconnect=false"/> 
<stop/> 
</route> 
関連する問題