2016-09-11 2 views
1

これは、特に、Storm's OutputCollectorおよびそのack(Tuple)およびfail(Tuple)の方法を参照しています。StormのOutputCollectorはどのように機能しますか?

これらの両方の方法は、_delegateフィールドIOutputCollectorのフィールドに転送するだけです。

しかし、タイプ階層IOutputCollectorを見ると、これらのメソッドで有用な何かを行うことができるそのインターフェイスを実装するクラスが存在しないようです。

CoordinatedOutputCollectorおよびAnchoringOutputCollectorは、それぞれ独自のユースケース固有の処理を行っているようです。

タプルを確認して配信セマンティクスを少なくとも1回トポロジで実行すると、どのような出力コレクタが使用されますか?

もっと一般的に、OutputCollectorはStormでどのように機能しますか?

タプルが1つのエグゼキュータから別のエグゼキュータに送信されると、LMAXディスラプチャ・キューとNettyコールバックが発生します。しかし、タプル進行は順流と同じですが、ack()/fail()は逆流します((N+1)thボルトは、前のNthボルトまでタプルを失敗させてしまいます)。

OutputCollectorsを使ってどのように動作するかについてのチュートリアルやブログはありますか?

答えて

1

BoltOutputCollectorImplはあなたが探しているものです。 にはackfailのメッセージが送信されます。 Ackerが時間内にすべてのボルトからackを受信すると、ackメッセージが送信されます。それ以外の場合は、失敗メッセージを返します。

完全なフローについては、SpoutOutputCollectorImplSpoutExecutorBoltExecutorをチェックアウトすることもできます。

上記のリンクはバージョン2.0.0-SNAPSHOTのApache Stormトランクからのものであり、まだリリースされていないことに注意してください。以前のStormバージョンでは、OutputCollectorの実装はClojureにあります。