28 akka 例子一

akka 例子

概述

Akka是JAVA虚拟机JVM平台上构建高并发、分布式和容错应用的工具包和运行时。Akka用Scala语言写成,同时提供了Scala和JAVA的开发接口。

Akka处理并发的方法基于Actor模型。在Akka里,Actor之间通信的唯一机制就是消息传递。

例子一

HelloWorld.scala

import akka.actor.Actor
import akka.actor.Props

class HelloWorld extends Actor {

  override def preStart(): Unit = {
    // create the greeter actor
    val greeter = context.actorOf(Props[Greeter], "greeter")
    // tell it to perform the greeting
    greeter ! Greeter.Greet
  }

  def receive = {
    // when the greeter is done, stop this actor and with it the application
    case Greeter.Done => context.stop(self)
  }
}

Greeter.scala

import akka.actor.Actor

object Greeter {
  case object Greet
  case object Done
}

class Greeter extends Actor {
  def receive = {
    case Greeter.Greet =>
      println("Hello World!")
      sender() ! Greeter.Done
  }
}

main2.scala 启动类

import akka.actor.ActorSystem
import akka.actor.Props
import akka.actor.ActorRef
import akka.actor.Actor
import akka.actor.ActorLogging
import akka.actor.Terminated

object Main2 {

  def main(args: Array[String]): Unit = {
    val system = ActorSystem("Hello")
    val a = system.actorOf(Props[HelloWorld], "helloWorld")
    system.actorOf(Props(classOf[Terminator], a), "terminator")
  }

  class Terminator(ref: ActorRef) extends Actor with ActorLogging {
    context watch ref
    def receive = {
      case Terminated(_) =>
        log.info("{} has terminated, shutting down system", ref.path)
        context.system.terminate()
    }
  }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,关于在Java8中使用Akka例子,该博客的章节设置可以拆分为以下几个部分: --- #### 1. 什么是Akka 介绍Akka框架的概念和优势,例如: - 分布式Actor模型 - 可伸缩性 - 异步和高效 #### 2. 创建一个Actor 介绍如何在Java8中创建一个Actor,例如: ``` public class MyActor extends AbstractActor { @Override public Receive createReceive() { return receiveBuilder() .match(String.class, message -> System.out.println("Received message: " + message)) .build(); } } ``` #### 3. 发送和接收消息 介绍如何在Akka框架中发送和接收消息,例如: ``` final ActorSystem system = ActorSystem.create("MySystem"); final ActorRef myActor = system.actorOf(Props.create(MyActor.class)); myActor.tell("Hello World!", ActorRef.noSender()); ``` #### 4. 处理Actor之间的交互 介绍如何处理Actor之间的交互,例如: ``` public class MyActor extends AbstractActor { private final ActorRef otherActor; public MyActor() { otherActor = getContext().actorOf(Props.create(OtherActor.class)); } @Override public Receive createReceive() { return receiveBuilder() .match(String.class, message -> otherActor.tell(message, getSelf())) .build(); } } public class OtherActor extends AbstractActor { @Override public Receive createReceive() { return receiveBuilder() .match(String.class, message -> System.out.println("Received message: " + message)) .build(); } } ``` #### 5. 使用Akka的扩展功能 介绍如何使用Akka的扩展功能,例如: - 路由 - 消息分发和过滤器 - 消息缓存和持久化 --- 以上是我对博客章节的建议,您可以根据实际需求进行修改和调整。另外,以下是一个简单的Java8中使用Akka例子,供您参考: ``` import akka.actor.AbstractActor; import akka.actor.ActorRef; import akka.actor.ActorSystem; import akka.actor.Props; public class Main { public static void main(String[] args) { final ActorSystem system = ActorSystem.create("MySystem"); final ActorRef myActor = system.actorOf(Props.create(MyActor.class)); myActor.tell("Hello World!", ActorRef.noSender()); system.terminate(); } public static class MyActor extends AbstractActor { private final ActorRef otherActor; public MyActor() { otherActor = getContext().actorOf(Props.create(OtherActor.class)); } @Override public Receive createReceive() { return receiveBuilder() .match(String.class, message -> otherActor.tell(message, getSelf())) .build(); } } public static class OtherActor extends AbstractActor { @Override public Receive createReceive() { return receiveBuilder() .match(String.class, message -> System.out.println("Received message: " + message)) .build(); } } } ``` 希望能对您有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值