如何获取或实例化Actor类?

时间:2014-08-14 09:03:52

标签: java akka actor

问题是我无法直接创建Actor类:

scala代码

MyActor extends EventsourcedProcessor with ActorLogging {
    // ...
}

Java代码

第一版

class TestClass {
    public static void main (String[] args) {
        MyActor actor = new MyActor() //Exception here
       //akka.actor.ActorInitializationException: You cannot create an instance of [MyActor] explicitly using the constructor (new). You have to use one of the 'actorOf' factory methods to create a new actor. See the documentation.
    }
}

第二版

class TestClass {
    public static void main (String[] args) {
        final ActorRef actor = ActorSystem.create("helloakka").actorOf(Props.create(MyActor.class), "actor");
        //What method to use there:
        //actor.get - ?
    }
}

重要

我需要actor类来诊断/试验其他类的编译时错误源。我无法在IDE中看到所有错误,因为它们不是突出显示,但是当maven编译它失败时。所以我做了一些实验,看看这些错误出现在哪里,哪些不出现。

1 个答案:

答案 0 :(得分:1)

如果您需要访问基础角色,则需要使用TestActorRef中的akka-testkit

import akka.testkit.TestActorRef

val actorRef = TestActorRef[MyActor]
val actor = actorRef.underlyingActor

http://doc.akka.io/docs/akka/2.3.5/scala/testing.html#Obtaining_a_Reference_to_an_Actor

这应仅在您的测试中使用,并且直接在生产代码中访问actor是非常危险的,不应该这样做。