时间:2021-05-19
Akka是一个免费的开源工具包和运行时,用于在JVM上构建高度并发,分布式和弹性消息驱动的应用程序。除Akka之外,您还具有Akka-streams模块,该模块使流的提取和处理变得容易,Alpakka是基于Reactive Streams和Akka的Java和Scala的Reactive Enterprise Integration库。这里重点介绍如何使用Java创建Akka项目并将其打包。
您已经知道Akka是基于Scala构建的,因此为什么要使用Java而不是Scala?选择Java有多种原因。
这里采用简单的方法,并从lightbend quickstart下载应用程序。
经过一些调整后,maven文件将如下所示,请注意,我们将使用lombok。
<project> <modelVersion>4.0.0</modelVersion> <groupId>com.gkatzioura</groupId> <artifactId>akka-java-app</artifactId> <version>1.0</version> <properties> <akka.version>2.6.10</akka.version> </properties> <dependencies> <dependency> <groupId>com.typesafe.akka</groupId> <artifactId>akka-actor-typed_2.13</artifactId> <version>${akka.version}</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.3</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.16</version> <scope>provided</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> <configuration> <source>11</source> <target>11</target> </configuration> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.6.0</version> <configuration> <executable>java</executable> <arguments> <argument>-classpath</argument> <classpath /> <argument>com.gkatzioura.Application</argument> </arguments> </configuration> </plugin> </plugins> </build></project>现在有一个Actor负责管理您的其他Actor。这是称为“守卫Acotr”的顶级Actor。它与ActorSystem一起创建,并且当它停止时,ActorSystem也将停止。
为了创建一个actor,您定义该actor将会收到的消息,并指定它会对这些消息响应什么。
package com.gkatzioura;import akka.actor.typed.Behavior;import akka.actor.typed.javadsl.AbstractBehavior;import akka.actor.typed.javadsl.ActorContext;import akka.actor.typed.javadsl.Behaviors;import akka.actor.typed.javadsl.Receive;import lombok.AllArgsConstructor;import lombok.Getter;public class AppGuardian extends AbstractBehavior<AppGuardian.GuardianMessage> { public interface GuardianMessage {} static Behavior<GuardianMessage> create() { return Behaviors.setup(AppGuardian::new); } @Getter @AllArgsConstructor public static class MessageToGuardian implements GuardianMessage { private String message; } private AppGuardian(ActorContext<GuardianMessage> context) { super(context); } @Override public Receive<GuardianMessage> createReceive() { return newReceiveBuilder().onMessage(MessageToGuardian.class, this::receiveMessage).build(); } private Behavior<GuardianMessage> receiveMessage(MessageToGuardian messageToGuardian) { getContext().getLog().info("Message received: {}",messageToGuardian.getMessage()); return this; }}Akka是消息驱动的,因此这个“守卫Acotr”接受到发送给它的消息。这样,那些实现GuardianMessage接口的消息将在这里receiveMessage()方法中处理。
当这个actor被创建时,createReceive方法用于指示如何处理接到的消息,这里是委托给receiveMessage()方法。
请注意,在进行日志记录时,不要在类中使用记录器,而应使用getContext().getLog()
在幕后,日志消息将自动添加actor的路径作为akkaSource映射诊断上下文(MDC)值。
最后一步是添加Main类。
package com.gkatzioura;import java.io.IOException;import akka.actor.typed.ActorSystem;import lombok.extern.slf4j.Slf4j;@Slf4jpublic class Application { public static final String APP_NAME = "akka-java-app"; public static void main(String[] args) { final ActorSystem<AppGuardian.GuardianMessage> appGuardian = ActorSystem.create(AppGuardian.create(), APP_NAME); appGuardian.tell(new AppGuardian.MessageToGuardian("First Akka Java App")); try { System.out.println(">>> Press ENTER to exit <<<"); System.in.read(); } catch (IOException ignored) { } finally { appGuardian.terminate(); } }}这里希望实现的效果是:让我们的“守卫Acotr”打印提交的消息。按下Enter键,Akka应用程序将通过监护人终止。与往常一样,您可以在github上找到源代码。
以上就是如何开发一个简单的Akka Java应用 的详细内容,更多关于Akka Java应用 的资料请关注其它相关文章!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Java日志相关技术作为一名Java程序员,我们开发了很多Java应用程序,包括桌面应用、WEB应用以及移动应用。然而日志系统是一个成熟Java应用所必不可少的
Hasor是一款开源的轻量级Java应用程序开发框架,它的核心目标是提供一个简单、切必要的开发环境给开发者,开发者可以在此基础上构建出更加完善的应用程序。在线A
如何使用Swift语言开发简单的iOS应用?针对这一个问题,苹果发布了一则视频教程,向开发者介绍了最基本的Swift编程以及如何使用Swift语言来开发应用
SpringBoot不是一个新框架,它是让开发者更快的开发Spring应用的一条捷径。使用它和使用标准java类库一样,只要简单的指定合适的spring-boo
一、介绍WebMagic是一个简单灵活的Java爬虫框架。基于WebMagic,你可以快速开发出一个高效、易维护的爬虫。二、如何学习1.查看官网官网地址为:ht