storm拓扑生成器

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

下面的代码从一个喷口开始构建一个拓扑。在这里, TenderEventSpout2 是阿克卡的演员。

TopologyBuilder builder = new TopologyBuilder();
builder.setSpout("EventSpout", new TenderEventSpout2(), 1);

tendereventspout2如下所示:

public class TenderEventSpout2 extends UntypedActor implements IRichSpout{  

    @Override 
    public void onReceive(Object message){// throws IOException {}

    @Override
    public void declareOutputFields(OutputFieldsDeclarer outputFieldsDeclarer) {}

    @Override
    public void open(Map map, TopologyContext topologyContext, SpoutOutputCollector spoutOutputCollector) {}

    @Override
    public void nextTuple() {}

    //Override all the interface methods
    @Override
    public void close() {}

    public boolean isDistributed() {
        return false;
    }

    @Override
    public void activate() {}

    @Override 
    public void deactivate() {}

    @Override
    public void ack(Object msgId) {}

    @Override
    public void fail(Object msgId) {}

    @Override
    public Map<String, Object> getComponentConfiguration() {
        return null;
    }

}

编译成功,但出现以下错误:
不能显式使用构造函数(new)创建[org.quadrisk.tology.tendereventspout2]的示例。必须使用“actorof”工厂方法之一来创建新的actor。请参阅文档。
但是按照建议使用actorof创建actor会返回actorref类型的对象。我该怎么办。提前谢谢。

2wnc66cl

2wnc66cl1#

您需要使用两个类而不是一个:
第一批机具 Actor 第二种工具 IRichSpout 在你的壶嘴里,你加了一个 ActorRef 成员变量,其中包含通过 ActorSystem#actorOf(...) .

相关问题