gpt4 book ai didi

java - 在 Java 中向 Actor 发送 PoisonPill

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:15:23 24 4
gpt4 key购买 nike

我开始通过将现有的 Java SE 应用程序迁移到 Akka 来学习它。我正在使用 Akka 2.0.3。

有一次我需要通过消息队列发送一个 PoisonPill 来停止 actors。我的 Actor 是这样实例化的:

ActorRef myActor = actorSystem.actorOf(new Props(MyActor.class), "myActor");

我尝试向其发送 PoisonPill:

myActor.tell(PoisonPill.getInstance());

但我得到以下编译器错误:

'tell(java.lang.Object)' in 'akka.actor.ActorRef' cannot be applied to '(akka.actor.PoisonPill$)'

我做错了什么?我在 Idea 中运行 Java 1.6.0_26(我在 Eclipse 中学习了一辈子)。


编辑:

我也尝试过文档中的这种方法,但我遇到了相同的编译器错误,并且 Idea 警告我 Actors 类已被弃用。

import static akka.actor.Actors.*;
extractionActor.tell(poisonPill());

最佳答案

请阅读 Akka 文档,我们花了很多时间创建它:

PoisonPill

You can also send an actor the akka.actor.PoisonPill message, which will stop the actor when the message is processed. PoisonPill is enqueued as ordinary messages and will be handled after messages that were already queued in the mailbox.

Use it like this:

   import static akka.actor.Actors.*;
myActor.tell(poisonPill());

自 2.0.2 以来,上述方法已被弃用,这是新的 API:

ActorRef ref = system.actorOf(new Props(JavaAPITestActor.class));
ref.tell(PoisonPill.getInstance());

以上是在我的机器上编译的,所以你可能在 IDEA 中遇到了一些问题?尝试用 javac 编译它,看看是否可行。

关于java - 在 Java 中向 Actor 发送 PoisonPill,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12190202/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com