要在Akka(Java绑定(bind))中实现您自己的自定义actor,您可以扩展UntypedActor基类。这需要您定义自己的onReceive(...)方法:@OverridepublicvoidonReceive(Objectmessage){//TODO}手头的问题是确定一种消息处理策略,使参与者能够处理多种类型的消息。一种策略是使用反射/类型。这里的问题是:它迫使我们创建空的“外壳类”,这些类只是为消息提供语义意义(见下文);和它占用了message参数并阻止我们传递任何动态或有意义的内容空壳类的例子:publicclassEmptyShellMessage{}然后在onR
我刚刚开始使用AKKA,并且有一个关于非参与者代码如何与参与者代码对话的基本问题。非参与者代码如何调用参与者并获得响应?我试过使用Patterns.ask从非Actor调用Actor,但这不起作用,因为没有Actor可以响应的“发送者”。那我应该怎么做呢? 最佳答案 这应该可以正常工作。当您使用ask时,会创建一个轻量级参与者(我相信由PromiseActorRef表示)来表示发送者,以便可以发回响应以完成>Future通过ask创建。一个小例子来说明这一点。首先是测试Actor:classTestActorextendsUntyp
我在作为akkaactor启动的服务器的字段注入(inject)中遇到空指针异常。附表部分:privateActorRefmyActor=Akka.system().actorOf(newProps(Retreiver.class));@OverridepublicvoidonStart(Applicationapp){log.info("Startingschedular.....!");Akka.system().scheduler().schedule(Duration.create(0,TimeUnit.MILLISECONDS),Duration.create(30,Time
我有以下驱动程序/主类封装了我的Akka程序://Groovypseudo-codeclassFizzBuzz{ActorSystemactorSystemstaticvoidmain(String[]args){FizzBuzzd=newFizzBuzz()d.run()}voidrun(){InitializeinitCmd=newInitialize()MasterActormaster=actorSystem.get(...)//Tellstheentireactorsystemtoinitializeitselfandstartdoingstuff.//ChickenCluc
我正在尝试使用ActorFor获取现有的ActorRef或创建一个新的(如果它不存在)。我有以下代码,但它似乎没有按预期工作。.isTerminated()始终为真。ActorSystemsystem=ActorSystem.create("System");ActorRefsubscriberCandidate=system.actorFor("akka://System/user/"+name);if(subscriberCandidate.isTerminated()){ActorRefsubscriber=system.actorOf(newProps(newUntypedAc
我有一些Akka项目,我有以下场景:我有很多Actor,我希望有一个人类可读的名字,但与此同时,我不想为每个Actor生成唯一的名字我一个人。那么,有没有一种方法可以让Prop或Actor系统为自动生成的名称添加特定字符串前缀?例如,我有一些ActorMaster创建了一些Worker类型的child。我希望每个child的名字都以“worker-”开头,这样我就可以轻松地在日志中跟进。另外,如果可能的话,我想知道是否有其他方法可以更细粒度地命名Actor。提前致谢。编辑:这是我想要的示例目前,据我所知,您有两个选择:1)使用自动生成的名字创建actorActorRefmyActor=
我有未知数量的工作要由已知(当然)数量的Actor执行。Actor完成工作后,初始工作数量可能会增加。也就是说,一个参与者在完成其任务后,可能会添加一个要执行的新作业。我处理这个问题的方法是让每个actor在完成其工作后向master发送一条消息,不仅包含执行结果,还带有一个“标志”,表明该actor现在处于空闲状态。master有一个作业队列和一个空闲actor队列,每当一个actor发送“作业完成消息”时,master就会检查该actor是否还有其他事情要做......等等,直到作业队列是空的,闲置队列已满...那时我关闭了系统。这里没有太多的监督,所以我觉得我做的不对...我没有
我在JAVA中使用Akka2.10。我有一个为我获取Actor引用的方法-或者创建一个(如果之前没有)-但有时当我尝试创建一个时,我收到以下异常:akka.actor.InvalidActorNameException:actorname[]isnotunique!atakka.actor.dungeon.ChildrenContainer$NormalChildrenContainer.reserve(ChildrenContainer.scala:130)atakka.actor.dungeon.Children$class.reserveChild(Children.scala:
假设我有一位主管已关联2位Actor。当我的应用程序关闭时,我想优雅地关闭那些Actor。调用supervisor.shutdown()会停止所有actors还是我仍然需要手动停止我的actors?谢谢 最佳答案 Stoppingasupervisor(调用Supervisor.stop())停止所有链接的(受监督的)actor:finalclassSupervisorActor{...overridedefpostStop():Unit=shutdownLinkedActors然而,当你想优雅地关闭系统中的所有参与者时,还有另一个
我在对LibGdxStage对象中的Actors进行排序时遇到问题。渲染舞台时,图像将按照添加的顺序进行渲染。舞台使用数组来保存Actor。我已经尝试设置每个Actor的ZIndex,但它仍然没有排序。然后我尝试像这样创建一个比较器对象:publicclassActorComparatorimplementsComparator{@Overridepublicintcompare(Actorarg0,Actorarg1){if(arg0.getZIndex()然后当我想进行实际比较时:Collections.sort(Stage.getActors(),newActorComparat