我有一个带有喷口和螺栓的风暴拓扑(numTasks = 16)。我想只在一个螺栓的任务中执行一段特定的代码(只有一次)。 我怎样才能做到这一点?
我想在螺栓的准备方法中这样做,但我不知道预先分配给螺栓的任务ID。
是否可以进行选举并在其中存储zookeeper,稍后在bolt的prepare方法中检索选举领导并与当前任务ID匹配。如果任务ID与选举领导者匹配,则在该螺栓任务实例中执行该特定代码段?如果这是一种合适的方法,我该怎么做呢?
答案 0 :(得分:0)
您可以通过(?s).*refId=(.*?)&
作为参数TopologyContext
访问包含所有元信息的整个拓扑DAG。在那里,您可以获得所有任务ID,包括您自己的任务ID。
因此,如果您的任务已分配最小(或最大)任务ID,则一种简单的方法是仅运行您的特殊代码。