Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagec#
themeEmacs
linenumberstrue
var actorInfo = Props.Create<PersistentActor>();
var perActor = actorSystem.ActorOf(actorInfo, "myActor");                        
// usage
Cmd cmd1 = new Cmd("장바구니를 물건을 담음-1");
Cmd cmd2 = new Cmd("장바구니에 물건을 담음-2");
Cmd cmd3 = new Cmd("장바구니에 물건을 또담음-3");
Cmd cmd4 = new Cmd("장바구니에 처음 담은 물건을뺌-4");
perActor.Tell(cmd1);
perActor.Tell(cmd2);
perActor.Tell(cmd3);
perActor.Tell(cmd4);
perActor.Tell("print"); //현재까지 액터가 가진 이벤트리스트를 재생합니다.            
waitForTest(1000);

//액터를 강제로 죽입니다.
perActor.Tell(Akka.Actor.Kill.Instance, ActorRefs.NoSender);
waitForTest(1000);

//액터가 복구되는지 확인합니다.
perActor = actorSystem.ActorOf(actorInfo, "myActor");            
perActor.Tell("print");




protected void waitForTest(int time = 1000)    //비동기 테스트를 위해 기다림
{
    Console.WriteLine("WaitforTest:" + time);
    Task.Delay(time).Wait();
}
Expand
titleresult

[DEBUG][2017-09-24 오후 1:59:13][Thread 0009][EventStream(ServiceA)] Logger log1-DefaultLogger [DefaultLogger] started
[DEBUG][2017-09-24 오후 1:59:13][Thread 0009][EventStream(ServiceA)] StandardOutLogger being removed
[DEBUG][2017-09-24 오후 1:59:13][Thread 0009][EventStream(ServiceA)] Default Loggers started
[INFO][2017-09-24 오후 1:59:13][Thread 0009][remoting] Starting remoting
[DEBUG][2017-09-24 오후 1:59:13][Thread 0015][remoting] Starting prune timer for endpoint manager...
[INFO][2017-09-24 오후 1:59:13][Thread 0009][remoting] Remoting started; listening on addresses : [akka.tcp://ServiceA@127.0.0.1:8001]
[INFO][2017-09-24 오후 1:59:13][Thread 0009][remoting] Remoting now listens on addresses: [akka.tcp://ServiceA@127.0.0.1:8001]
[WARNING][2017-09-24 오후 1:59:13][Thread 0009][ActorSystem(ServiceA)] NewtonSoftJsonSerializer has been detected as a default serializer. It will be obsoleted in Akka.NET starting from version 1.5 in the favor of Hyperion (for more info visit: http://getakka.net/docs/Serialization#how-to-setup-hyperion-as-default-serializer ). If you want to suppress this message set HOCON `akka.suppress-json-serializer-warning` config flag to on.
WaitforTest:1000
Try print
장바구니에 처음 담은 물건을뺌-4-3, 장바구니에 물건을 또담음-3-2, 장바구니에 물건을 담음-2-1, 장바구니를 물건을 담음-1-0
WaitforTest:1000
[ERROR][2017-09-24 오후 1:59:14][Thread 0010][akka://ServiceA/user/myActor] Kill
Cause: Akka.Actor.ActorKilledException: Kill
위치: Akka.Actor.ActorCell.AutoReceiveMessage(Envelope envelope)
위치: Akka.Actor.ActorCell.Invoke(Envelope envelope)
Try print - 여기서 액터의 이벤트가 복구됨을 확인할수 있습니다.
장바구니에 처음 담은 물건을뺌-4-3, 장바구니에 물건을 또담음-3-2, 장바구니에 물건을 담음-2-1, 장바구니를 물건을 담음-1-0

...