ボルトの一つであり、3本のボルトからフェイル()の場合は嵐のリプレイによって発生するイベントの重複を処理する方法 - Aは、B、Cの私はスパウトSとのトポロジを持って
ボルトAから読み取りますSpout S. Bolt Aは、データをボルトBとCに分割します(いくつかのフィルタに基づいて)。ボルトBおよびCはそれぞれのデータシンクを有する。
私はStormのアンカーリングとタプルをボルトAにアンカーし、その後、ボルトBのackは成功しましたが、ボルトCは失敗()します。 Spout SでStormが再生すると、Bのイベントが重複してBのデータシンクに入りますか?
もしそうなら、嵐の信頼性のアンカー機能を使用している間にそれを避ける方法は何ですか?
ありがとう@Matthias。タプルをアンカーした後は、Stormで再生メカニズムがデフォルトで使用されていますか?または、ack()メソッドとfail()メソッドをオーバーライドして自分でコードを作成する必要がありますか? – figaro
独自のspoutを実装する場合は、ack()とfail()を実装する必要があります。 (ストームは既に、「out-of-the-box」だけで使用できる、いわゆる「信頼できるスパウト」を提供しています。)もちろん、スパウトがフォールトトレラントであることを確認し、タプルを再発行する必要がありますfail()が呼び出されたときに、spoutが間に失敗したとしても。さらに、spout内でemitを呼び出すときにメッセージIDを割り当てる必要があります。 –