2016-11-11 8 views
0

私はスパウトとボルト(numTasks = 16)を備えたストームトポロジを持っています。私はボルトの1つのタスクで特定のコードを(1回だけ)実行したい。 これをどのように達成できますか?ストームボルトの場合:1つのボルトタスクでコード行を実行する方法

私はボルトの準備方法でそれをやって考えたが、私は事前にボルトに割り当てられるタスクIDを知りません。

は、それはそれで選挙して保存を行うために飼育係と後でボルトの準備方法で現在のタスクIDで選挙のリーダーとの一致を検索することも可能です。タスクIDが選挙リーダーと一致する場合、そのボルトタスクインスタンスの特定のコードを実行しますか?これが適切なアプローチであれば、どうすればよいでしょうか?

+0

またはそれは、ボルトの準備方法では、すべてのボルトtaskIdsのリストを取得することは可能でしょうか? – Priyanka

答えて

0

あなたは#prepare()にパラメータとして提供TopologyContextを経由してすべてのメタ情報と全体のトポロジDAGにアクセスすることができます。そこにあなた自身のタスクIDを含むすべてのタスクIDを得ることができます。

したがって、単純なアプローチは、あなたのタスクは分(またはmax)を持っている場合、タスクIDが割り当てられ、あなただけの特別なコードを実行することです。

+0

ありがとう、これが助けになった! – Priyanka