akka+java+教程,如何开发一个简单的Akka Java应用

8731a31b6c853550098db38145cbb69d.png

Akka是一个免费的开源工具包和运行时,用于在JVM上构建高度并发,分布式和弹性消息驱动的应用程序。除Akka之外,您还具有Akka-streams模块,该模块使流的提取和处理变得容易,Alpakka是基于Reactive Streams和Akka的Java和Scala的Reactive Enterprise Integration库。这里重点介绍如何使用Java创建Akka项目并将其打包。

您已经知道Akka是基于Scala构建的,因此为什么要使用Java而不是Scala?选择Java有多种原因。

Akka是在JVM上运行的工具包,因此您无需精通Scala即可使用它。

您可能已经有一个精通Java的团队,但没有Scala的团队。

如果您已经具有基于Java的代码库和各种构建工具(Maven等),则进行评估要容易得多。

这里采用简单的方法,并从lightbend quickstart下载应用程序。

经过一些调整后,maven文件将如下所示,请注意,我们将使用lombok。

4.0.0

com.gkatzioura

akka-java-app

1.0

2.6.10

com.typesafe.akka

akka-actor-typed_2.13

${akka.version}

ch.qos.logback

logback-classic

1.2.3

org.projectlombok

lombok

1.18.16

provided

org.apache.maven.plugins

maven-compiler-plugin

3.8.0

11

11

org.codehaus.mojo

exec-maven-plugin

1.6.0

java

-classpath

com.gkatzioura.Application

现在有一个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 {

public interface GuardianMessage {}

static Behavior create() {

return Behaviors.setup(AppGuardian::new);

}

@Getter

@AllArgsConstructor

public static class MessageToGuardian implements GuardianMessage {

private String message;

}

private AppGuardian(ActorContext context) {

super(context);

}

@Override

public Receive createReceive() {

return newReceiveBuilder().onMessage(MessageToGuardian.class, this::receiveMessage).build();

}

private Behavior 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;

@Slf4j

public class Application {

public static final String APP_NAME = "akka-java-app";

public static void main(String[] args) {

final ActorSystem 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应用 的资料请关注云海天教程其它相关文章!

原文链接:https://www.jdon.com/55229

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值