
<!-- 定义一下常量 --> <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>
依赖:
<?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" } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
2018-03-28 spring-CXF-maven
2018-03-28 spring_cxf_basic_sender
2018-03-28 jap _spring _maven