Programing/Akka 29

Akka Coordinated Shutdown

Akka Coordinated ShutdownAkka의 Actor System 종료 과정에서 특정 Actor 또는 서비스에 대해 작동을 요청을 할수가 있다.밀린 메시지 처리 및 Connect 정리 등에 활용 될수 있는 기능이다. Configuration# CoordinatedShutdown is enabled by default and will run the tasks that# are added to these phases by individual Akka modules and user logic.## The phases are ordered as a DAG by defining the dependencies between the phases# to make sure shutdown tasks are ..

Programing/Akka 2018.12.11

Akka Stream Materialized values

Akka Stream Materialized values각각의 operator들은 Source와 Sink와 Flow는 실체화된후 (Materialized) 실체화된 값(Materialized values)을 가지고 있는다.데이터로써 의미가 있는 값일수도 있고 Control를 할수 있는 객체가 실체화되기도 한다.Materialized 값에 대한 유지 OperatorKeep.both()전 Stage의 Value와 현재 Operator의 Value를 둘다 유지한다.Keep.left()전 Stage의 Value를 유지한다. 기본값Keep.right()현재 Operator의 Value를 유지한다. Example// Source는 Integer 데이터가 나오고, 외부에서 컨트롤 할수 있는 CompleteableFu..

Programing/Akka 2018.11.24

Akka Actor Hierarchy

Akka Actor Hierarchysystem.actorOf()로 만들어진 Actor user guardian에서 만들어 진다.getContext().actorOf()를 이용하여 자식(Child) Actor를 생성을 할수 있다./ - root guardian이라고 불린다. 시스템에 있는 모든 Actor의 부모 엑터이다./user - 유저가 생성된 모든 엑터의 부모 엑터이다./system - system guardianExample - Print reference부모/자식 관계의 actor를 알아보는 방법중에 제일 쉬운 방법은 ActorRef의 Reference를 출력하는 방법이다.package com.lightbend.akka.sample; import akka.actor.AbstractActor;im..

Programing/Akka 2018.10.22

Akka Actor Life Cycle

Akka Actor Life CycleActor는 UID, Mailbox, Path를 가지고 있다.외부에서는 ActorRef를 통해 접근을 한다., Path, UID를 가지고 있는다.객체를 직접 접근하지는 못한다 (Hides the instance)ActorSelection를 통해 ActorRef를 가지고 온다.actorOf를 통해 액터를 생성을 할수 있다.preStart() method : 엑터가 시작되고 첫번째 메시지를 받기 전에 실행이 된다postStop() method 엑터가 중단될때 시작된다, 실행이 되후 메시지를 받지 못한다.resume와 restart의 차이는 새로운 Actor를 생성을 하나 안하나의 차이이다.context.stop() 또는 Posion Pill를 이용하여 Actor를 종료할..

Programing/Akka 2018.10.21

Akka Pulling Pattern

Akka Pulling Pattern 일반적인 시나리오Email 마켓팅 타겟 고객을 DB에서 읽는다. (Customer Target Read Actor) FASTEmail 컨텐츠를 생성을 한다. (Email Content Create Actor) FASTEmail를 보낸다. (Email Sender Actor) SLOWActor를 이용하여 간단한 구조의 시스템을 제작하는 경우 위와 같은 시나리오의 시스템을 제작을 할수 있다.Email Send할때 속도가 느리기 때문에 Email를 보내는 Actor가 Mailbox가 Overflow가 되거나 GC로 인해 시스템이 정상 작동이 되지 않을수가 있다.Pulling Pattern을 적용한 시나리오작업을 하는 Worker Actor들이 있다.Worker Actor는..

Programing/Akka 2018.10.13

Akka with Spring

Akka with SpringActor를 만들때 필요한 의존성을 대표적인 Dependency Injection 프레임워크인 Spring를 이용하여 사용하는 방법에 대해 알아보자Spring Bean Cycle과 다르게 Akka Actor의 Life Cycle을 가지고 있는다. Gradlecompile "org.springframework:spring-context:${spring.version}"compile "com.typesafe.akka:akka-actor_2.11:${akka.version}" Define Actor@Component@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)public class GreetingActor extends UntypedActor..

Programing/Akka 2018.09.29

Akka Actor 개발팁

Akka Actor 개발팁 1. Actor은 하나의 기능만을 담당을 한다.객체지향의 SRP기능을 많아 질수록 복잡성이 높아진다. 응집도가 낮아진다. 결합도 높아진다. 2. Actor Message는 Actor Class 내부에 정의한다.public class DemoMessagesActor extends AbstractLoggingActor { static public class Greeting { private final String from; public Greeting(String from) { this.from = from; } public String getGreeter() { return from; } } @Override public Receive createReceive() { return..

Programing/Akka 2018.09.18

Akka Distributed Publish Subscribe in Cluster #3. Configuration

Akka Distributed Publish Subscribe in Cluster #3. ConfigurationAkka PubSub에 대한 Configuration에 대해 알아보자.application.conf# Settings for the DistributedPubSub extensionakka.cluster.pub-sub { # Actor name of the mediator actor, /system/distributedPubSubMediator name = distributedPubSubMediator # Start the mediator on members tagged with this role. # All members are used if undefined or empty. role = ..

Programing/Akka 2018.09.11

Akka Distributed Publish Subscribe in Cluster #2.Send

Akka Distributed Publish Subscribe in Cluster #2.SendSendpoint-point modecluster 내부 node에 actor가 어디에 있는지를 모르는 경우에 사용을 한다.특정 일을 하고 있는 Actor를 찾는 경우채팅방에서 상대방의 Actor를 찾는 경우메세지가는 path가 매칭되는 하나의 actor에게만 전달이 된다.여러개인 경우에는 RoutingLogic 에 따라 하나의 actor에만 메시지가 전달이 된다.DistributedPubSubMediator.Put 를 이용하여 ActorRef를 Path로 registry 에 등록이 된다.DistributedPubSubMediator.Send를 이용하여 해당하는 Path로 메시지를 전달을 한다.종료될때 자동으로 ..

Programing/Akka 2018.09.11

Actor Selection을 통한 Actor 찾기 (Identifying Actors via Actor Selection)

Actor Selection을 통한 Actor 찾기 (Identifying Actors via Actor Selection) 하나의 액터는 Unique한 Path를 가지고 있기 때문에 Path를 이용하여 Actor를 찾을수가 있다 (Look up) // will look up this absolute path getContext().actorSelection("/user/serviceA/actor"); // will look up sibling beneath same supervisor getContext().actorSelection("../joe"); `ActorSelection` 객체가 리턴이 된다. Remote System에서는 `ActorSelection`은 처음 응답은 한 Actor (init..

Programing/Akka 2018.09.02