`
VerRan
  • 浏览: 452133 次
  • 性别: Icon_minigender_1
  • 来自: 陕西.西安
社区版块
存档分类
最新评论

AKKA 学习笔记之1

    博客分类:
  • JAVA
阅读更多

AKKA 是一款基于actor模型实现的 并发处理框架。基于事件驱动的并发处理模型,每一个actor拥有自己的属性和操作,这样就避免了通常情况下因为多个线程之间要共享属性(数据)而是用锁机制的处理。这种机制在scala,cloure 语言中应用的很好,将操作和属性放在一个独立的单元中进行处理,从而提高并发处理的能力。

 

下面用一个最简单的helloword作为进入akka世界的开始。

功能描述:

实现通过一个actior发送消息到另一个actor然后将处理结果返回,感觉很简单类似两个类的方法调用,但是这里实际上的处理时异步的并非同步的调用处理,这里神奇的地方就在于AKKA的内部机制了后续再做深入研究。

 

HelloWorld 类

package com.huawei.akka;

import akka.actor.Props;
import akka.actor.UntypedActor;
import akka.actor.ActorRef;
public class HelloWorld extends UntypedActor {
 
  @Override
  public void preStart() {
    // create the greeter actor
    final ActorRef greeter =
        getContext().actorOf(Props.create(Greeter.class), "greeter");//创建greeter actor实例
    // tell it to perform the greeting
    greeter.tell(Greeter.Msg.GREET, getSelf());//通过tell方法给greeter actor 发送一条消息
  }
 
  @Override
  public void onReceive(Object msg) {
    if (msg == Greeter.Msg.DONE) {
      // when the greeter is done, stop this actor and with it the application
      getContext().stop(getSelf());
    } else unhandled(msg);
  }
}

 

Greeter类

package com.huawei.akka;

import akka.actor.UntypedActor;

public class Greeter extends UntypedActor {
	  
	  public static enum Msg {
	    GREET, DONE;
	  }
	  
	  @Override
	  public void onReceive(Object msg) {
	    if (msg == Msg.GREET) {
	      System.out.println("Hello World!");
	      getSender().tell(Msg.DONE, getSelf());
	    } else unhandled(msg);
	  }
	  
	}

 运行HelloWorld类,akka提供了一个主actor类,可以通过这个类直接执行以上的方法,在eclipse中在helloworld类中点击 open run dailoge,然后在Main.class 选项中输入akka.Main,然后选择arguments 在program arguments 中输入 com.huawei.akka.HelloWorld,点击 apply 然后运行结果如下:

Hello World!
[INFO] [09/15/2013 15:06:33.125] [Main-akka.actor.default-dispatcher-5] [akka://Main/user/app-terminator] application supervisor has terminated, shutting down

 

从运行结果可以看出,HelloWorld actor正确的调用了 Greeter actor 因为输出了 Hello World!从Infor日志可以看出 HelloWorld actor 正常接收到了 Greeter actor 的返回停止了当前actor。

 

分享到:
评论

相关推荐

    akka学习入门实践

    akka学习入门实践

    Akka 基础学习pdf中文文档

    第 1 章 初识 Actor:Akka 工具集以及 Actor 模型的介绍。 第 2 章 Actor 与并发:响应式编程。Actor 与 Future 的使用。 第 3 章 传递消息:消息传递模式。 第 4 章 Actor 的生命周期—处理状态与错误:Actor 生命...

    Akka Scala 学习高清原版pdf

    Akka scala 并发 actor 高清原版pdf 学习scala实现akka进行并发编程

    Learning Akka(PACKT,2015)

    Akka is a distributed computing toolkit that enables developers to build correct concurrent and distributed applications using Java and Scala with ease, applications that scale across servers and ...

    AKKA 本质 《Akka Essentials》

    Akka Essentials,学习akka很好的一本书

    Akka.in.Action.2016.9.pdf

    Akka in Action shows you how to build message-oriented systems with Akka. This comprehensive, hands-on tutorial introduces each concept with a working example. You’ll start with the big picture of ...

    Akka入门与实践

    第 1 章 初识 Actor:Akka 工具集以及 Actor 模型的介绍。 第 2 章 Actor 与并发:响应式编程。Actor 与 Future 的使用。 第 3 章 传递消息:消息传递模式。 第 4 章 Actor 的生命周期—处理状态与错误:Actor 生命...

    Learning Akka

    Learning Akka Learning Akka Learning AkkaLearning Akka

    Akka 实战 akka in action v13 2014版本

    akka 实战。akka in action。v13 2014新版。 互联网技术入门必备 清晰,非扫描。

    akka java实现tcp远程调用

    akka实例 java实现tcp远程调用,一个服务端,一个客户端

    akka-kryo-serialization, 基于Kryo的Akka序列化.zip

    akka-kryo-serialization, 基于Kryo的Akka序列化 akka-kryo-serialization-- Scala 和Akka基于kryo的序列化程序这个库为 Scala 和Akka提供定制的基于kryo的序列化程序。 它可以用于更高效的akka远程处理。它还可以...

    Akka Concurrency

    Akka Concurrency

    akka实例参考

    初学akka使用实例,有很好的帮助啊,可实际运行

    Akka-in-Action.pdf

    In March 2010 I noticed a tweet by Dean Wampler that made me look into Akka: W00t! RT @jboner: #akka 0.7 is released: http://bit.ly/9yRGSB After some investigation into the source code and building a ...

    akkajava.pdf

    Akka is here to change that. Using the Actor Model we raise the abstraction level and provide a better platform to build scalable, resilient and responsive applications—see the Reactive Manifesto ...

    akka-data-replication, 在Akka集群中,复制 CRDTs.zip

    akka-data-replication, 在Akka集群中,复制 CRDTs Akka分布式数据这个库的( akka-data-replication ) 已经包含在Akka中,在模块中分发数据。英镑不在/akka-data-replication中维护。 所有 Bug 修复和新功能将在 ...

    AKKA (java) 精讲

    AKKA (java) 精讲

    akka-actor-2.11-2.5.19-API文档-中文版.zip

    赠送jar包:akka-actor_2.11-2.5.19.jar; 赠送原API文档:akka-actor_2.11-2.5.19-javadoc.jar; 赠送源代码:akka-actor_2.11-2.5.19-sources.jar; 赠送Maven依赖信息文件:akka-actor_2.11-2.5.19.pom; 包含...

    Akka机制详解

    Akka官方文档,详细介绍了基于Scala的Akka开发细节,是喜爱Scala的同学学习akka的入门教程。

    Applied.Akka.Patterns

    Chapter 1. The Actor Model Chapter 2. Introducing Akka Chapter 3. Distributed Domain-Driven Design Chapter 4. Good Actor Design Chapter 5. Good Data Flow Chapter 6. Consistency and Scalability Chapter...

Global site tag (gtag.js) - Google Analytics