如何在抽象类中访问TopologyContext

时间:2016-11-29 18:54:05

标签: java redis apache-storm jedis

我的目标是在整个拓扑中添加指标。事情在扩展Base / Rich bolt类的螺栓上运行良好,但是我没有在扩展以下AbstractRedisBolt class的螺栓中注册任何指标。

我试图将TopologyContext放在一个扩展AbstractRedisBolt的螺栓中。但是,此类的prepare方法不会将拓扑上下文公开给派生类。

我尝试通过为上下文定义一个类属性来扩展AbstractRedisBolt类,并返回一个返回该属性的方法,但这并没有真正解决。我最终在我的bolt中获得拓扑上下文的引用,但是context.registerMetric操作没有注册任何指标。

谢谢,

1 个答案:

答案 0 :(得分:1)

只需覆盖prepare(),包括调用超类:

public class MyRedisBolt extends AbstractRedisBolt {
    private TopologyContext context = null;

    public void prepare(Map map, TopologyContext topologyContext, OutputCollector collector) {
        super.prepare(map, topologyContext, collector);
        this.context = topologContext;
    }
}