2016-04-14 8 views
2

ここで私が実装しようとしているシナリオです1回に100行ずつファイルをバッチ処理するプロセッサ。 バッチ処理された行セットをKafkaトピックに書き出します。Apacheのキャメル連鎖ルート

私は最初の部分を理解しました。ファイルをローカルディレクトリに読み込むことができます。問題は、2番目のルート(Kafkaにローカルファイルをストリーミングする)をどのように蹴るのですか? >

もしKAFKA

- FTP用

1 - >ローカルファイルとその後、ローカルファイルに対して1:一緒に同じルートでこれらのタスクのすべてのチェーンに方法はありますか、私は複数のルートを持っている必要があります私は2つのルートが必要です、そして、最初のルートが完了した後、2番目のルートを開始する最善の方法は何ですか。

ありがとうございます。さらに、すでに動作しているFTP部分はここにあります。

public void configure() throws Exception { 
    from(fullyBuiltFtpPath) 
      .routeId("FTP ENDPOINT CONSUMER" + UUID.randomUUID().toString()) 
      .process(new FtpToLocalFileProcessor()) 
      .to("file:c:\\temp") 
      .log(LoggingLevel.INFO, "FILENAME: ${header.CamelFileName}").end(); 
} 
+0

[file component](http://camel.apache.org/file2.html)を使用して、100行バッチをファイルに保存するディレクトリを監視できます。しかし、バフをカフカにまっすぐに送るのはなぜですか?あなたはファイルで何か別のことをする必要がありますか? – Ralf

+0

それは別のオプションですが、私はFTPルートから直接ファイルをバッチする方法を知らないです。 FTPルートがファイルをlocalTempDirectoryにコピーした後にストリームを流すコンポーネントがありますか? – h0mer

答えて

0

は、私は2つの異なるルートにルートを分割することになりましたディレクトリに移動し、ファイルを使用します。

これは理想的ではありませんが、現在は機能しています。助けてくれてありがとう。

+0

ルート2の処理に長い時間がかかる状況にはどう対処しますか?私はルート1がファイルシステムをいっぱいにしたくない。 – dustmachine

+0

私の場合、ルート1のファイルロックを行い(FTPから取得)、ロックが解除されると、ルート2はファイルを取得して処理を続行します。 – h0mer

0

Linux環境では、ファイルをフォルダに作成して同時に使用するのは間違いではありませんが、環境によって異なります。しかし、ラクダは消費者と生産者に指定できる "doneFileName"という便利なメカニズムを提供します。 詳細はこちらhttp://camel.apache.org/file2.html

詳細は、「他のユーザーがファイルを直接ドロップするフォルダのファイルを使用する」のセクションを参照してください。ローカルの一時を聞くことが

1)FTPサーバからファイルを取得し、ローカルの一時ディレクトリ 2に保管)ファイルのルートを起動します。

関連する問題