java—如何在抽象类中访问topologycontext

wz8daaqr  于 2021-06-21  发布在  Storm
关注(0)|答案(1)|浏览(259)

我的目标是在整个拓扑中添加度量。在扩展基本/丰富的bolt类的bolt上工作得很好,但是我无法在扩展以下内容的bolt中注册任何度量 AbstractRedisBolt 班级。
我试图在一个螺栓内获得拓扑上下文,以扩展 AbstractRedisBolt . 然而 prepare 此类的方法不向派生类公开拓扑上下文。
我试着延长时间 AbstractRedisBolt 通过为上下文定义一个class属性+一个返回该属性的方法初始化,但是这并没有真正起作用。我最终在bolt中获得了对拓扑上下文的引用,但是 context.registerMetric 操作未注册任何度量。
谢谢您,

tgabmvqs

tgabmvqs1#

只需覆盖 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;
    }
}

相关问题