下面的代码从一个喷口开始构建一个拓扑。在这里, 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类型的对象。我该怎么办。提前谢谢。
1条答案
按热度按时间2wnc66cl1#
您需要使用两个类而不是一个:
第一批机具
Actor
第二种工具IRichSpout
在你的壶嘴里,你加了一个ActorRef
成员变量,其中包含通过ActorSystem#actorOf(...)
.