2016-05-24 15 views
0

BufferedOutputプラグインで write(chunk)が例外をスローした場合、またはチャンクを処理しているときにフルードプロセスが終了した場合は、キューには入っていますが、それは、フルート再起動後にクラッシュが再度処理される前に処理されたイベント/レコードを意味しますか?Fluentd BufferedOutput write(chunk)処理イベントを正確に1回処理する方法

この場合、write(chunk)は「正確に1回の処理」のためにアトミックでなければなりません。次に、目的のためにfilterstream-methodセクションに書かれたメソッドhereは良いですか?すなわち、MultiEventStreamのイベントは原子的に処理されていますか?

答えて

0

write(chunk)この方法でエラーが発生した場合は、再試行することがあります。したがって、そのメソッドは冪等として記述する必要があります。

あなたのしていることを理解できません。それぞれの方法は、これらの目的のために設計されています

フィルターで
  • filter_stream:選択/
  • format出力で(再試行されません、各イベントごとに1回)のイベントを拒否、またはレコードの/剃りフィールドを豊かに:文字列に書式設定イベントを/バイナリの場合、チャンクから書き込まれます(各イベントごとに1回、再試行されません)
  • write出力:チャンクからデータを読み込んで宛先に書き込んでください(少なくともチャンクごとに1回、エラーで再試行)
+0

すぐにお返事ありがとうございます。私は、 'write(chunk)'が少なくとも一度はチャンクの処理を保証していることを知っていますが、問題は私がチャンクのイベントを何度も処理したくないということです。 'write(chunk)'が処理中で、すでにいくつかのデータを宛先に送っている時間 – pterodragon

+0

イベントを変更するには、フィルタが冪等でなければならないという考えがあります。しかし、私は、 '書き込み(チャンク)'が宛先に突然変異したデータ(チャンク内)を原子的に送信したことを確認する方法があるかどうかを尋ねたいと思います。(失敗または成功;データの半分しか送信せず、チャンク) – pterodragon

+0

これを行うには唯一の方法があります - 再書き込みせずに 'write'ですべての例外をキャッチしてください。 –

関連する問題