我有以下基本条件:阿卡 - 一个演员怎样才能得到一个Web服务的引用
public static void main(...) {
final MyWebServiceClient client = new MyWebServiceClient(...,....,....);
...
final ActorRef master = system.actorOf(Props.create(Level1Actor.class), "level1");
master.tell(new Level1Message()...);
}
Level1Actor.onRecieve()
创建多个Level2Actors:
...
getContext().actorOf(Props.create(Level2Actor.class)).tell(new Level2Message(), getSelf());
...
,同样Level2Actor.onReceive创建几个Level3Actors
这里是我的问题:在Level3Actor.onRecieve()我想使用我在我的主要方法中创建的Web服务客户端,如:
public void onReceive() {
...
EmailSummary summary = client.getEmailSummary(username, password, etc, etc);
//create and send a response to sender based on 'summary'
...
}
我该如何做到这一点?理想情况下,我想在启动时配置我的web服务(url等),然后访问它深层的几层Actor?
在我的主要方法中是否有一种方法来注册某个在创建actor时被调用的工厂?如:
system.register(Level3Actor.class, myFactoryWithReferenceToWebService);
?或者从Spring的角度来看,我的Web服务将是一个bean,并且只是自动装入到Level3Actor实例中?
谢谢。
谢谢你,这正是我之后的事情,我会给弹簧选项一个去 – user1736191
内部实现类是非常有用的。即使文档说接口和实际实现使用两个类。但是正如这里所显示的,只有一个类可以使代码更加干净 – SashikaXP