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

<?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>
java 폴더를 삭제한다.scala 폴더를 생성한다.

Open Module Settings 에 들어간다.



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

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

완료 되었으면 모듈 설정창을 나와준다.
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"
}
}

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