Page History
이번장에서는 Actor의 기능을 확장하여 유용한 몇가지 기능들을 살펴보겠습니다.
Untyped Actor
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
public class MyActorSame : UntypedActor { protected override void OnReceive(object message) { if(message is string) { if (message as string == "createChild") { Context.ActorOf<MyActor>("myChild"); Sender.Tell("Create Child Succed:myChild"); } else { Sender.Tell("RE:" + message); } } else if(message is SomeMessage) { Sender.Tell("RE:" + (message as SomeMessage).message ); } } } |
...
ACTOR의 확장기능을 설명하기위해 이제부터는 UntypedActor를 사용하면서 진행하겠습니다.
Become/Unbecome
...
사용목적 : 메시지 처리기가 어떠한 메시지에 따라 패턴이 변한다고 가정합시다.
...
Expand | ||
---|---|---|
| ||
[INFO][2017-09-05 오전 6:50:10][Thread 0005][[akka://ServiceA/user/myactor#16204 |
액트의 Lifecyle
...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
public class BasicActor : UntypedActor { private ILoggingAdapter log = Context.GetLogger(); protected override void PreStart() { } protected override void PreRestart(Exception reason, object message) { } protected override void OnReceive(object message) { //handle messages here log.Info("BasicActor:GetSomeMessage " + message.ToString()); Sender.Tell("OK"); } protected override void PostStop() { } protected override void PostRestart(Exception reason) { } } |
메시지 수신처리외에 다양한 이벤트에 대한 처리기핸들링 가능합니다.
Monitoring
어떠한 액터에게, 특정액트를 감시하게 하거나 kill을 할수 있는 권한을 준다고 했을시
...
Expand | ||
---|---|---|
| ||
[INFO][2017-09-06 오전 4:53:45][Thread 0006][[akka://ServiceA/user/myactor#14600 [INFO][2017-09-06 오전 4:53:45][Thread 0004][[akka://ServiceA/user/watcher#11499 [INFO][2017-09-06 오전 4:53:45][Thread 0004][[akka://ServiceA/user/watcher#11499 |
액트접근 주소체계
...
잠시 실습없이, Actor를 접근하는 주소체계에대해 설명 드리겠습니다. ActorPath는 총 4가지로 구분이 되며
...