2013-05-09 9 views
5

嵐の文書では、処理がタイムアウトしたタプルを嵐が再生していると言われています。私の質問は、嵐がこれを自動的に(原点スパウトでfail()を呼び出さずに)行うのか、それともタプルを再生するために元のスパウトの責任であるか(fail()が呼び出され、リプレイが外部)? http://storm.apache.org/documentation/Guaranteeing-message-processing.htmlから処理がタイムアウトした嵐の再生タプルはありますか?

答えて

6

タイムアウトに適切な再生をするには、吐水口から放出するときにタプルにIDを固定する必要があります。タイムアウトが発生すると、アンカーとして使用したものがfailメソッド(fail(object anchorId))に返されます。これで、タイムアウトタプルでやりたいことを再生するために、失敗した/タイムアウトされたタプルのanchorIdを使うことができます。各アンカーIDは一意でなければなりません。アンカーIDの例は、データベースIDです。タプルが失敗すると、databse idを使用してタプルを再作成して再表示することができます。だからあなたの質問に答えるには、失敗の内部にリプレイロジックを持っていなければならず、anchorIdを使ってタプルを再作成することができます。この情報が役立つことを願っています

+0

Spoutのfail()メソッドでどのボルトが失敗したのか知る方法はありますか?基本的には、ack()またはfail()を実行しているときに、タプルにボルト固有の情報を送りたいと思います。どのようにこれを行うことができますか? –

4

タプル回アウトストームはそうです、failが呼び出されますSpout

failメソッドを呼び出します場合。

関連する問題