Tag: 演员

Java的哪个Actor模型库/框架?

Java(和JVM语言)有很多不同的Actor模型实现。 许多Actor库和框架已经被实现来允许Java中的Actor风格的编程(它没有内build的Actor)。 我认为Actor模型有很大的优势,但是对Java的select是压倒性的! 有人可以发布最stream行的,并提供一些洞察到哪些使用? 对于每秒通过消息的吞吐量,哪些是基准的?

阿卡的演员与斯卡拉的演员模型有什么区别

我发现还有一个阿卡演员模型,所以我想知道阿卡的演员和斯卡拉的演员模型之间有什么区别?

Akka如果抛出exception,Actor不会终止

我目前正试图开始与阿卡,我面临一个奇怪的问题。 我的演员有以下代码: class AkkaWorkerFT extends Actor { def receive = { case Work(n, c) if n < 0 => throw new Exception("Negative number") case Work(n, c) => self reply n.isProbablePrime(c); } } 这就是我开始工作的方式: val workers = Vector.fill(nrOfWorkers)(actorOf[AkkaWorkerFT].start()); val router = Routing.loadBalancerActor(SmallestMailboxFirstIterator(workers)).start() 这就是我如何closures一切: futures.foreach( _.await ) router ! Broadcast(PoisonPill) router ! PoisonPill 现在会发生什么,如果我发送工作人员消息与n> 0(没有例外抛出),一切工作正常,应用程序正常closures。 但是,只要我发送一条消息导致exception,应用程序就不会终止,因为仍然有一个actor正在运行,但我无法弄清楚它来自哪里。 如果有帮助,这是所讨论的线程的堆栈: […]

什么devise决定会赞成Scala的Actor而不是JMS?

使用Scala Actor而不是JMS有什么不同? 例如,从性能和可伸缩性的angular度来看,Scala Actor模型与JMS相比有哪些增加? 在哪些情况下,使用Actor而不是JMS更有意义,即,Actors解决JMS无法解决的问题是什么?

Scala中的多个Actor是如何实现的?

随着Scala 2.9.0的发布,Typesafe Stack也被宣布,它将Scala语言与Akka框架相结合。 现在,尽pipeScala在其标准库中有演员,但Akka使用自己的实现。 而且,如果我们寻找其他的实现,我们也会发现Lift和Scalaz也有实现。 那么,这些实现有什么区别呢?

何时使用参与者而不是消息解决scheme(如WebSphere MQ或Tibco Rendezvous)?

我已经阅读过什么样的devise决定会赞成Scala的Actor而不是JMS的问题和答案? 。 通常,我们使用已存在多年的消息传递解决scheme:使用诸如WebSphere MQ或Apache ActiveMQ之类的JMS实现进行点对点通信,或者使用Tibco Rendevous进行多播消息传递。 它们非常稳定,经过validation,可提供高可用性和高性能。 尽pipe如此,configuration和设置似乎比阿卡更复杂。 何时以及为什么我应该使用Akka来处理上述产品(WebSphere MQ或ActiveMQ)已经成功使用的情况? 为什么我应该在未来的项目中考虑使用Akka而不是WebSphere MQ或Tibco RV? 什么时候我应该避免阿卡? 它是否提供与其他解决scheme相同的高可用性和性能? 或者将Akka与其他消息中间件进行比较,这是不是一个好主意? 也许除了JMS(点对点),TibcoRV(多播)和Akka之外,JVM环境中还应该考虑另一个消息传递解决scheme?

斯卡拉演员:接受vs反应

首先让我说,我有相当多的Java经验,但最近才对函数式语言感兴趣。 最近我开始看Scala,这看起来像一个非常好的语言。 不过,我一直在阅读关于Scala 编程中的 Scala的Actor框架,还有一件事我不明白。 在30.4章节中,它表示使用react而不是receive来重用线程,这对性能是有好处的,因为在JVM中线程是很昂贵的。 这是否意味着,只要我记得要求react而不是receive ,我可以像我喜欢的那样开始尽可能多的演员? 在发现Scala之前,我一直在玩Erlang, 编程Erlang的作者吹嘘产卵超过200,000进程没有打破汗水。 我讨厌用Java线程来做到这一点。 与Erlang(和Java)相比,我在Scala中看到了什么样的限制? 另外,这个线程如何在Scala中重用? 为了简单起见,我们假设我只有一个线程。 我会开始在这个线程中顺序运行的所有演员,还是会进行某种任务切换? 例如,如果我启动了两个互相发送消息的演员,如果他们在同一个线程中启动,我是否会冒死锁的风险? 根据斯卡拉编程 ,编写演员使用react比receive更困难。 这听起来似乎合理,因为react不会返回。 然而,本书继续展示如何使用Actor.loop在循环内部react 。 结果,你得到了 loop { react { … } } 对我而言,这看起来很相似 while (true) { receive { … } } 这在本书的早些时候使用。 不过,这本书说,“实际上,程序至less需要几个receive ”。 那么我在这里错过了什么? 除此之外,还有哪些能做的react呢? 为什么我在乎 最后,谈到我不明白的核心:本书不断提及如何使用react使得可以放弃调用堆栈来重用线程。 这是如何运作的? 为什么有必要放弃调用堆栈? 为什么当一个函数终止抛出一个exception( react ),而不是当它通过返回( receive )终止时,可以抛弃调用栈? 我有一个印象, Scala编程一直在掩盖一些关键的问题,这是一个耻辱,因为否则它是一本非常出色的书。