Actor简介(一)

本文介绍了Akka的Actor模型,包括Actor的初识、创建方式、Props构建工具、消息传递(tell和ask方法)、消息转发和查找。通过示例展示了如何在Java中创建和使用Actor,以及Actor之间的异步通信。
摘要由CSDN通过智能技术生成

       在开发初期,业务单一、系统简单,一台机器或许就能支撑,这个时候,单机上的任务大多直接调用API的方式就能完成。然而当业务需求日益增多,功能逐渐复杂化,我们就需要考虑把项目拆分成分布式环境,这时,多系统通信就需要通过网络实现。JDK内置的并发包在单机上游刃有余,在分布式环境中,就不是那么完美了。Akka通过Actor很好的解决了远程通信问题。

     Actor初识

        Akka中,Actor使用消息传递进行通信,完成任务。Actor编程,不同于之前通过对象调用完成某个功能,它采用“问答”式API进行通信,这种方式更加贴近日常生活,易于理解。另外,使用Actor,不是操作Actor对象,而是操作它的引用对象(ActorRef),在Akka中,ActorRef对Actor做了很好的封装,防止外界对Actor的状态进行修改。

       下面,来一个小示例认识一下actor:

        首先,我们创建一个maven project,并在pom.xml中引入Akka依赖:

<dependency>

    <groupId>com.typesafe.akka</groupId>

    <artifactId>akka-actor_2.11</artifactId>

    <version>2.5.16</version>

</dependency>

        定义Actor:

public class ActorDemo extends AbstractActor {

private final LoggingAdapter logger = Logging.getLogger(getContext().getSystem(), this);

@Override

public Receive createReceive() {

    return receiveBuilder().match(String.class, s -> {

        logger.info("小明:" + s);

      }).matchAny(other -> {

        logger.info("其它未知消息:" + other);

      }).build();

}


public static void main(String[] args) {

    ActorSystem system = ActorSystem.create("system");

    ActorRef demo = system.actorOf(Props.create(ActorDemo.class), "actorDemo");
    
    demo.tell("hello world",ActorRef.noSender());

    final Integer other=20;

    demo.tell(other,ActorRef.noSender());

  }

}

         执行结果:

[INFO] [09/22/2018 10:35:54.295] [system-akka.actor.default-dispatcher-4] [akka://system/user/actorDemo] 小明:hello world

[INFO] [09/22/2018 10:35:54.296] [system-akka.acto
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值