是否有用于Storm Spout或Bolt的API来访问其ID?我所指的ID是String
传递给班级setSpout
中的setBolt
或backtype.storm.topology.TopologyBuilder
方法。
访问此字符串以进行日志记录会很有用。
答案 0 :(得分:3)
您可以在螺栓的prepare方法中对传递的拓扑上下文使用getThisComponentId():
@Override
public void prepare(Map config, TopologyContext context, OutputCollector collector) {
this.collector = collector;
String componentId = context.getThisComponentId();
}
以及用于喷口的开放式方法。
还有一个更通用的方法getComponentId(int taskId),它返回任何给定任务的组件ID。
答案 1 :(得分:0)
整数ID由70
给出。
对于Spouts:
getThisTaskId()
对于螺栓:
@Override
public void open(Map map, TopologyContext tc, SpoutOutputCollector soc) {
System.out.println("\n\n\nThis Spout's ID is: "+context.getThisTaskId());
}