인텔리제이로 Akka 프로젝트 생성하기

Ada·2023년 8월 22일

Akka

목록 보기
4/32

이 글은 인텔리제이 내에 scala 가 설치된 상황 이후의 글입니다.

  1. 기본적인 Java - Maven 프로젝트를 하나 생성한다.

  1. 생성된 pom.xml 에 다음과 같이 코드를 추가한다.
    처음에 디펜던시만 추가 했더니 오류가 나서, maven repository 를 추가했더니 해결되었다.
<?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">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>untitled3</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    
// 여기부터 추가된 코드

    <dependencies>
        <dependency>
            <groupId>com.typesafe.akka</groupId>
            <artifactId>akka-actor_2.13</artifactId>
            <version>2.6.20</version>
        </dependency>
        <dependency>
            <groupId>com.typesafe.akka</groupId>
            <artifactId>akka-testkit_2.13</artifactId>
            <version>2.6.20</version>
        </dependency>
    </dependencies>

    <repositories>
        <repository>
            <id>akka-repository</id>
            <name>Akka library repository</name>
            <url>https://repo.akka.io/maven</url>
        </repository>
    </repositories>

</project>
  1. src 와 test 폴더 내의 java 폴더를 삭제한다.
    삭제한 자리에 scala 폴더를 생성한다.

  1. 프로젝트명에서 우클릭 후 Open Module Settings 에 들어간다.

  1. Libraries 에 들어가 동그라미 친 부분의 플러스 버튼을 눌러 Scala SDK 를 선택한다.

  1. 본인이 해당하는 버전의 스칼라 버전을 선택해서 ok 버튼을 두 번 연달아 눌러준다.

그럼 스칼라 sdk가 추가된 것을 볼 수 있다.

이후 Modules 에 들어와 기존에 Sources, Tests 로 설정되어있던 java 폴더를
우측 화면에서 x를 눌러 제거해준 뒤 scala 폴더를 지정해준다.

완료 되었으면 모듈 설정창을 나와준다.

  1. 예시 코드를 작성하여 실행시켜보자.

actor 라는 패키지를 생성하고 그 안에 PingActor, PongActor 라는 Scala Class 를 생성한다.

각각의 코드는 아래와 같다.

package actor

import akka.actor.{Actor, Props}
import akka.event.Logging

class PingActor extends Actor {
  val log = Logging(context.system, this)
  val pong = context.actorOf(Props.create(classOf[PongActor], self), "pongActor")

  def receive = {
    case msg@"pong" =>
      log.info(s"Ping received $msg")
      pong ! "ping"
  }
}
package actor

import akka.actor.{Actor, ActorRef}
import akka.event.Logging

class PongActor(ping: ActorRef) extends Actor {
  val log = Logging(context.system, this)

  def receive = {
    case msg@"ping" =>
      log.info(s"Pong received $msg")
      ping ! "pong"
      Thread.sleep(1000) // 실전에서는 절대 금물!!!
  }
}

그 다음 기본 Main 클래스에 아래와 같이 작성한다.

import akka.actor.{ActorSystem, Props}
import actor.PingActor

object Main {
  def main(args: Array[String]) = {
    val actorSystem = ActorSystem.create("TestSystem")
    def ping = actorSystem.actorOf(Props.create(classOf[PingActor]))
    ping ! "pong"
  }
}

로그가 찍히며 잘 실행되는 것을 볼 수 있다.

코드 참조 : https://github.com/baekjunlim/AkkaStartingScala

profile
백엔드 프로그래머

0개의 댓글