Akka Actor模型开发库开源项目

我要开发同款
匿名用户2011年02月17日
74阅读
开发技术Scala
所属分类程序开发、并发/并行处理框架
授权协议Apache

作品详情

Akka是一个用Scala编写的库,用于简化编写容错的、高可伸缩性的Java和Scala的Actor模型应用。

Actor模型并非什么新鲜事物,它由CarlHewitt于上世纪70年代早期提出,目的是为了解决分布式编程中一系列的编程问题。其特点如下:

系统中的所有事物都可以扮演一个Actor

Actor之间完全独立

在收到消息时Actor所采取的所有动作都是并行的,在一个方法中的动作没有明确的顺序

Actor由标识和当前行为描述

Actor可能被分成原始(primitive)和非原始(nonprimitive)类别

非原始Actor有

由一个邮件地址表示的标识

当前行为由一组知识(acquaintances)(实例变量或本地状态)和定义Actor在收到消息时将采取的动作组成

消息传递是非阻塞和异步的,其机制是邮件队列(mail-queue)

所有消息发送都是并行的

Java代码:

public class Greeting implements Serializable {  public final String who;  public Greeting(String who) { this.who = who; }} public class GreetingActor extends UntypedActor {  LoggingAdapter log = Logging.getLogger(getContext().system(), this);   public void onReceive(Object message) throws Exception {    if (message instanceof Greeting)      log.info("Hello " + ((Greeting) message).who);  }} ActorSystem system = ActorSystem.create("MySystem");ActorRef greeter = system.actorOf(Props.create(GreetingActor.class), "greeter");greeter.tell(new Greeting("Charlie Parker"), ActorRef.noSender());

Scala代码:

case class Greeting(who: String) class GreetingActor extends Actor with ActorLogging {  def receive = {    case Greeting(who) ⇒ log.info("Hello " + who)  }} val system = ActorSystem("MySystem")val greeter = system.actorOf(Props[GreetingActor], name = "greeter")greeter ! Greeting("Charlie Parker")

 

在线APIdoc:https://tool.oschina.net/apidocs/apidoc?api=akka2.0.2%2Fapi

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论