Spout 或 Bolt 能否访问在拓扑中已知的 ID?

Dar*_*ert 5 apache-storm

是否有可供 Storm Spout 或 Bolt 访问其 ID 的 API?我所指的 IDString是传递给class 中的setSpoutorsetBolt方法的 ID backtype.storm.topology.TopologyBuilder

出于日志记录的目的访问此字符串会很有用。

Chr*_*ken 3

您可以在螺栓的准备方法中对传递的拓扑上下文使用 getThisComponentId() :

@Override
public void prepare(Map config, TopologyContext context, OutputCollector collector) {
    this.collector = collector;

    String componentId = context.getThisComponentId();
}
Run Code Online (Sandbox Code Playgroud)

以及喷嘴的 open 方法。

还有一个更通用的方法 getComponentId(int taskId),它返回任何给定任务的组件 ID。