假设我有一位主管已关联2位Actor。当我的应用程序关闭时,我想优雅地关闭那些Actor。调用supervisor.shutdown()会停止所有actors还是我仍然需要手动停止我的actors?谢谢 最佳答案 Stoppingasupervisor(调用Supervisor.stop())停止所有链接的(受监督的)actor:finalclassSupervisorActor{...overridedefpostStop():Unit=shutdownLinkedActors然而,当你想优雅地关闭系统中的所有参与者时,还有另一个
据我了解,Java/JVM中的最佳实践规定您永远不应捕获Throwable直接,因为它涵盖了Error这恰好包含像OutOfMemoryError这样的东西和KernelError.一些引用here和here.但是在Scala标准库中,有一个提取器NonFatal被广泛推荐(并被Akka等流行库广泛使用)作为catch中的最终处理程序(如果需要的话)block。正如所怀疑的那样,这个提取器恰好捕获了Throwable如果它是fatalerror之一,则重新抛出它。查看代码here.这可以通过一些反汇编的字节码进一步证实:问题:我在第一段中所做的假设是否正确?还是我假设抓不到Throwa
我有以下任务,对此我有Java/Executors解决方案运行良好,但我想在Akka中实现相同的功能并寻找最佳实践建议。问题:从多个URL中并行获取/解析数据,阻塞直到所有数据被获取并返回聚合结果。应该重试错误(IOException等)达到一定次数。到目前为止,我的实现非常简单——创建知道应该获取哪些URL的Fetcheractor,它创建一堆Workeractor并向它们发送URL,每条消息一个。完成特定URLWorker后,将消息连同结果发送回Fetcher。Fetcher保持结果状态,Workers无状态。下面是简化的代码。getter:classFetcherextendsU
我正在尝试运行我已经在各种条件下成功运行了几个月的东西。我在运行Java7的Java应用程序中使用akka-actor_2.112.3.4和scala-library2.11.7。就像我说的,相同的代码已经工作了几个月。在最近的情况下,我得到以下信息:java.lang.ClassCastException:interfaceakka.actor.Schedulerisnotassignablefromclassakka.actor.LightArrayRevolverScheduleratakka.actor.ReflectiveDynamicAccess$$anonfun$getC
我目前正在研究Akka(Java版)中的容错和主管策略。在...http://doc.akka.io/docs/akka/2.3.2/java/fault-tolerance.html和http://doc.akka.io/docs/akka/2.3.2/general/supervision.html#supervision几个问题:1)当我们知道期望什么样的异常时,我们应该在Actor中使用try/catch块吗?为什么或者为什么不?如果不是,我们是否应该依靠监督者策略来有效处理child可能抛出的异常?2)默认情况下,如果在父actor中没有显式配置任何super用户,则看起来任
我是Akka(Javalib)的新手,我想了解Akka是否可用于向JDBC发出非阻塞请求,如果可以,它会是什么样子。我相信大多数JDBC驱动程序打开一个套接字连接并阻塞创建它的线程,直到收到特定的JDBC响应,因此Akka在这里可能无能为力,但我想知道是否有一种方法(可能通过Futures或Agents?)Akka可以帮助提高性能,并允许actor系统继续处理数据,同时正在进行现有的JDBC调用并等待响应。我找到了thisarticle这有点模糊/神秘,但听起来future可能是这里的关键。然而那篇文章并没有真正展示任何有意义的(真实世界的)代码示例,所以我仍然不知所措。假设我们有一个
我开始通过将现有的JavaSE应用程序迁移到Akka来学习它。我正在使用Akka2.0.3。有一次我需要通过消息队列发送一个PoisonPill来停止actors。我的Actor是这样实例化的:ActorRefmyActor=actorSystem.actorOf(newProps(MyActor.class),"myActor");我尝试向其发送PoisonPill:myActor.tell(PoisonPill.getInstance());但我得到以下编译器错误:'tell(java.lang.Object)'in'akka.actor.ActorRef'cannotbeappl
我最近读到Quasar它为JVM提供“轻量级”/类似Go的“用户模式”线程(它也有一个Erlang启发的Actor系统,比如Akka但这不是主要问题)例如:packagejmodern;importco.paralleluniverse.fibers.Fiber;importco.paralleluniverse.strands.Strand;importco.paralleluniverse.strands.channels.Channel;importco.paralleluniverse.strands.channels.Channels;publicclassMain{publ
我正在使用akkaactor系统进行多线程处理。它在正常用例中运行良好。但是,Akka会在发生fatalerror时关闭JVM。请告诉我如何配置Akka以禁用java中的“akka.jvm-exit-on-fatal-error”。下面是代码。publicclassQueueListenerimplementsMessageListener{privateString_queueName=null;publicstaticbooleanisActorinit=false;publicstaticActorSystemsystem=null;privateActorRefmyActor;
你能给我解释一下之间的区别吗context.actorOf和system.actorOf? 最佳答案 这个问题的答案很容易在Akka文档中找到:AnactorsystemistypicallystartedbycreatingactorsbeneaththeguardianactorusingtheActorSystem.actorOfmethodandthenusingActorContext.actorOffromwithinthecreatedactorstospawntheactortree.使用System.actorOf