<!-- 定义一下常量 -->
    <properties>
        <encoding>UTF-8</encoding>
        <scala.version>2.11.8</scala.version>
        <scala.compat.version>2.11</scala.compat.version>
        <akka.version>2.4.17</akka.version>
    </properties>

    <dependencies>
        <!-- 添加scala的依赖 -->
        <dependency>
            <groupId>org.scala-lang</groupId>
            <artifactId>scala-library</artifactId>
            <version>${scala.version}</version>
        </dependency>

        <!-- 添加akka的actor依赖 -->
        <dependency>
            <groupId>com.typesafe.akka</groupId>
            <artifactId>akka-actor_${scala.compat.version}</artifactId>
            <version>${akka.version}</version>
        </dependency>

        <!-- 多进程之间的Actor通信 -->
        <dependency>
            <groupId>com.typesafe.akka</groupId>
            <artifactId>akka-remote_${scala.compat.version}</artifactId>
            <version>${akka.version}</version>
        </dependency>
    </dependencies>
View Code

 

依赖:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>Seascala</artifactId>
        <groupId>com.sea</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>AkkaDemo</artifactId>


    <dependencies>
        <!--scala -->
        <!-- https://mvnrepository.com/artifact/org.scala-lang/scala-library -->
        <dependency>
            <groupId>org.scala-lang</groupId>
            <artifactId>scala-library</artifactId>
            <version>2.13.1</version>
        </dependency>
        <!-- 配置akka actor 依赖-->
        <dependency>
            <groupId>com.typesafe.akka</groupId>
            <artifactId>akka-actor_2.13</artifactId>
            <version>2.6.3</version>
        </dependency>
        <!-- 多进程之间的通信akka actor 依赖-->
        <dependency>
            <groupId>com.typesafe.akka</groupId>
            <artifactId>akka-remote_2.13</artifactId>
            <version>2.6.3</version>
        </dependency>
    </dependencies>
    <build>
        <!--指定源码位置-->
        <sourceDirectory>src/main/scala</sourceDirectory>
        <testSourceDirectory>src/test/scala</testSourceDirectory>
    </build>


</project>

 

Demo:

package com.sea.f01

import akka.actor.{Actor, ActorRef, ActorSystem, Props}

class SayHelloActor extends Actor {
  override def receive: Receive = {

    case "hello" => println("您好!")
    case "xf" => println("xf  hahhahah!")
    case _ => println("您是?")

  }
}


object SayHelloActorDemo {
  //创建一个ActorSystem  ,专门用于创建actor
  private val actoryFactory = ActorSystem("actoryFactory")
 //创建一个Actor的同时,返回一个actor 的引用actorref
  //说明:
//Props[SayHelloActor]  使用反射创建了一个SayHelloActor 实例
//  "sayHelloActor" 给 actor 取名
//  sayHelloActorActorRef 就是 Props[SayHelloActor]  的ActorRef
  private val sayHelloActorRef: ActorRef = actoryFactory.actorOf(Props[SayHelloActor], "sayHelloActor")



  //test
  def main(args: Array[String]): Unit = {
    //给SayHelloActor 发消息
    sayHelloActorRef ! "xf"
    print("over")
  }


}

 Demo2

import akka.actor.{Actor, ActorRef, ActorSystem, Props}

class Aactor(actorRef:ActorRef)  extends  Actor{
  override def receive: Receive = {
    case "start" =>{
          println("Aactior start ")
      actorRef ! "我打"
    }
    case "我打" =>{
       .sleep(1000)
      println("Aactior  我也被打了 我要开始反击了 XXX")
      sender() ! "我打"
    }

  }
}


class Bactor extends  Actor {
  override def receive: Receive ={

    case "我打"=>{
      Thread.sleep(1000)
      println("Bactior 被打了 , 要开始反击了 jj")
       sender() ! "我打"
    }

  }
}






object  testABActor {
   val actorFacory: ActorSystem = ActorSystem("actorFacory")
   val bactorRef: ActorRef = actorFacory.actorOf(Props[Bactor], "bactor")
   val actorRef: ActorRef = actorFacory.actorOf(Props(new Aactor(bactorRef)), "actor")

  def main(args: Array[String]): Unit = {
    actorRef ! "start"
  }
}

 

posted on 2020-03-28 13:52  lshan  阅读(246)  评论(0编辑  收藏  举报