Page History
...
- 민수야 너의 나이가 몇이니? : 민수야(액터선택) 너의 나이가 몇이니?( ASK ) - 응답을 기달림
- 영희야 선생님이 찾으셔 교무실에 가봐 : 영희야(액터선택) 선생님이 찾으셔 교무실에 가봐( Tell) - 전달만함, 교무실제 교무실에 실제로 갔는지 알필요없음
토너 액터 구현
Code Block | ||||
---|---|---|---|---|
| ||||
public class TonerActor : ReceiveActor { private readonly ILoggingAdapter logger = Context.GetLogger(); private readonly string id; private int tonerAmount = 5; public TonerActor() { id = Guid.NewGuid().ToString(); logger.Info($"토너 액터 생성:{id}"); ReceiveAsync<int>(async usageAmount => { logger.Info($"토너 소모 :{usageAmount}"); if (tonerAmount < 1) { //송신자 에게 이야기하기 Sender.Tell("토너가 모두 소모되었습니다."); } tonerAmount -= usageAmount; }); ReceiveAsync<string>(async msg => { if (msg == "남은용량?") { Sender.Tell($"남은 용량은 {tonerAmount} 입니다."); } }); } } |
...
- 토너소모를 하기위해 int를 전송하는것이아닌 → 토너소모객체(TonerConsumption)를 정의하여 Tell 하는것이 권장됩니다.
- Sender : 민수→영희 에게 질문을 하였다고 해봅시다. 최초 대화시작에서 민수는 영희를 지정할 필요가 있지만(액터선택) , 그것에 대한 영희의 응답은 대상지정이 아닌 나에게 질문을 한 대상자 즉 Sender이며 민수를 찾을 필요가 없습니다.
작동결과
git : 액터를 추가하고 상호 메지시 교환을 추가한 변경코드
...