一、akka简介
akka是用scala编写的actor模型框架。它在使用中不需要锁和多线程,每个actor在独立空间中进行数据操作,
各个actor间完全依赖消息进行信息交互,操作都是异步进行的。
它可以用于高并发、分布式场景,需要注意的是,akka消息的传递不保证绝对可靠投递,当然这带来了好处是
整个实现简单。
二、akka关键点
1、角色系统建立
在akka中,所有角色都需在角色系统中,可以通过ActorSystem.create方法建立,同时可以指定角色系统名称,这会在actor路径中体现出来;
2、角色类的定义
通过继承AbstractActor类,实现抽象方法createReceive,并在此方法定义消息处理模块(使用reciveBuilder.build进行构造),
接收消息(消息类型,其实也就是消息的class类型区分消息),并进行消息处理;
3、角色的创建
通知ActorSystem的actorOf方法创建actor,创建时可以通过new BalancingPool(3)指定该actor的工作worker数量,
以及actor的名称,这会在路径中体现出来。
4、角色路径及查找
akka内的各个actor采用类似于分布式文件系统(如hdfs)进行管理,actor类似于文件系统的各个文件。
akka主要根路径有三个:/(根路径),/system(系统相关的路径),/user(用户路径,通常定义的actor在此路径下)。
有了路径,可以通过getContext().actorSelect()方法基于路径,
获取到相关actor引用,进而发送消息。
三、akka实现步骤
1、建立角色系统,ActorSystem;
2、定义角色,actor;
3、注册角色,actorSystem.actorOf;
4、消息的传递,tell;
5、在actor内消息的处理(处理完后,也可通过actorSelect路径选择其它actor,并发送消息)
四、实例
1、添加maven依赖
<dependency> <groupId>com.typesafe.akka</groupId> <artifactId>akka-actor_2.11</artifactId> <version>2.5.1</version> </dependency>2、代码实例