最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何開發(fā)一個簡單的Akka Java應(yīng)用

 更新時間:2020年10月29日 11:47:10   作者:banq  
這篇文章主要介紹了如何開發(fā)一個簡單的Akka Java應(yīng)用 ,幫助大家使用Java創(chuàng)建Akka項目并將其打包,感興趣的朋友可以了解下

Akka是一個免費的開源工具包和運行時,用于在JVM上構(gòu)建高度并發(fā),分布式和彈性消息驅(qū)動的應(yīng)用程序。除Akka之外,您還具有Akka-streams模塊,該模塊使流的提取和處理變得容易,Alpakka是基于Reactive Streams和Akka的Java和Scala的Reactive Enterprise Integration庫。這里重點介紹如何使用Java創(chuàng)建Akka項目并將其打包。

您已經(jīng)知道Akka是基于Scala構(gòu)建的,因此為什么要使用Java而不是Scala?選擇Java有多種原因。

  • Akka是在JVM上運行的工具包,因此您無需精通Scala即可使用它。
  • 您可能已經(jīng)有一個精通Java的團隊,但沒有Scala的團隊。
  • 如果您已經(jīng)具有基于Java的代碼庫和各種構(gòu)建工具(Maven等),則進行評估要容易得多。

這里采用簡單的方法,并從lightbend quickstart下載應(yīng)用程序。

經(jīng)過一些調(diào)整后,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>

現(xiàn)在有一個Actor負(fù)責(zé)管理您的其他Actor。這是稱為“守衛(wèi)Acotr”的頂級Actor。它與ActorSystem一起創(chuàng)建,并且當(dāng)它停止時,ActorSystem也將停止。

為了創(chuàng)建一個actor,您定義該actor將會收到的消息,并指定它會對這些消息響應(yīng)什么。

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是消息驅(qū)動的,因此這個“守衛(wèi)Acotr”接受到發(fā)送給它的消息。這樣,那些實現(xiàn)GuardianMessage接口的消息將在這里receiveMessage()方法中處理。

當(dāng)這個actor被創(chuàng)建時,createReceive方法用于指示如何處理接到的消息,這里是委托給receiveMessage()方法。

請注意,在進行日志記錄時,不要在類中使用記錄器,而應(yīng)使用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.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();
        }
    }
 
}

這里希望實現(xiàn)的效果是:讓我們的“守衛(wèi)Acotr”打印提交的消息。按下Enter鍵,Akka應(yīng)用程序?qū)⑼ㄟ^監(jiān)護人終止。與往常一樣,您可以在github上找到源代碼。

以上就是如何開發(fā)一個簡單的Akka Java應(yīng)用 的詳細(xì)內(nèi)容,更多關(guān)于Akka Java應(yīng)用 的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 詳解Java中常見語法糖的使用

    詳解Java中常見語法糖的使用

    語法糖(Syntactic Sugar),也稱糖衣語法,是由英國計算機學(xué)家 Peter.J.Landin 發(fā)明的一個術(shù)語,指在計算機語言中添加的某種語法,本文主要為大家分享了12個java中常見的語法糖,感興趣的小伙伴可以了解下
    2023-11-11
  • spring無法引入注解及import org.springframework.web.bind.annotation.*報錯的解決

    spring無法引入注解及import org.springframework.web.bind.annota

    本文主要介紹了spring無法引入注解及import org.springframework.web.bind.annotation.*報錯的解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • spring6+JDK17實現(xiàn)SSM起步配置文件

    spring6+JDK17實現(xiàn)SSM起步配置文件

    本文介紹了使用Spring6和JDK17配置SSM(Spring + Spring MVC + MyBatis)框架,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01
  • 用Java實現(xiàn)24點游戲

    用Java實現(xiàn)24點游戲

    喜歡玩游戲的有福啦,文中有非常詳細(xì)的開發(fā)框架,按著框架來實現(xiàn)就好啦.而且24點游戲是經(jīng)典的紙牌益智游戲.,需要的朋友可以參考下
    2021-05-05
  • 關(guān)于Spring的AnnotationAwareAspectJAutoProxyCreator類解析

    關(guān)于Spring的AnnotationAwareAspectJAutoProxyCreator類解析

    這篇文章主要介紹了關(guān)于Spring的AnnotationAwareAspectJAutoProxyCreator類解析,Spring是一個開源免費的框架 , 容器,是一個輕量級的框架 ,需要的朋友可以參考下
    2023-05-05
  • 手寫redis@Cacheable注解?支持過期時間設(shè)置方式

    手寫redis@Cacheable注解?支持過期時間設(shè)置方式

    這篇文章主要介紹了手寫redis@Cacheable注解?支持過期時間設(shè)置方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • java 8如何自定義收集器(collector)詳解

    java 8如何自定義收集器(collector)詳解

    這篇文章主要給大家介紹了關(guān)于java 8如何自定義收集器(collector)的相關(guān)資料,文中介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。
    2017-06-06
  • java實現(xiàn)異步線程,回調(diào)接口方式

    java實現(xiàn)異步線程,回調(diào)接口方式

    這篇文章主要介紹了java實現(xiàn)異步線程,回調(diào)接口方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Springboot中@Async異步,實現(xiàn)異步結(jié)果合并統(tǒng)一返回方式

    Springboot中@Async異步,實現(xiàn)異步結(jié)果合并統(tǒng)一返回方式

    這篇文章主要介紹了Springboot中@Async異步,實現(xiàn)異步結(jié)果合并統(tǒng)一返回方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • SpringBoot項目POM文件的使用小結(jié)

    SpringBoot項目POM文件的使用小結(jié)

    本文主要詳細(xì)介紹了Maven中SpringBoot項目的POM文件配置,包括項目的依賴和插件,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-11-11

最新評論

伊吾县| 尼勒克县| 甘南县| 卓资县| 昌黎县| 彭州市| 共和县| 崇州市| 乐昌市| 晋城| 旺苍县| 呼和浩特市| 建瓯市| 安吉县| 调兵山市| 中江县| 威远县| 锦州市| 柳州市| 南召县| 集贤县| 赞皇县| 宾阳县| 靖宇县| 安龙县| 涟源市| 桦甸市| 剑阁县| 库伦旗| 从化市| 克山县| 德昌县| 济宁市| 乐清市| 西吉县| 宝清县| 信宜市| 江山市| 贵德县| 芜湖市| 泸定县|