1
내 액터 시스템은 콘솔 응용 프로그램에서 초기화됩니다. 계정의 신용/직불/계정 잔액 처리와 같은 은행 계좌 거래를 담당하는 한 명의 액터 호출 BankAccrountActor를 구성합니다. 신용/직불 명령에서 배우는 계좌와 Sender.Tell()의 잔액을 신용/차변 금액으로 계상합니다. 내 program.cs에서 BankAccountActor를 호출하여 차변을 요구하고 결과와의 균형을 맞 춥니 다.Akka.net 보낸 사람 비 액터 컨텍스트에서
나를 위해 문제는 BankAccountActor에서 Sender.Tell()을 호출하여 균형을 유지합니다. 여기에서 보낸 사람은 IActorRef 유형이며 결과는 프로그램 클래스로오고 프로그램은 배우가 아닙니다. 어떻게 가능할까요?
namespace BankAccount
{
class Program
{
static void Main(string[] args)
{
ActorSystem actorSystem = ActorSystem.Create("BankAccountSystem");
Props bankAccountAccProps = Props.Create<BankAccountActor>();
IActorRef bankAccActor = actorSystem.ActorOf(bankAccountAccProps, "abc");
var remainBalance = bankAccActor.Ask<decimal>(new DebitAccMessage(100)).Result;
}
}
internal class BankAccountActor : ReceiveActor
{
private decimal _accBalance = 100;
public BankAccountActor()
{
Receive<DebitAccMessage>(message => Debit(message));
Receive<CreditAccMessage>(message => Credit(message));
}
public void Debit(DebitAccMessage debitMessage)
{
_accBalance += debitMessage.Amount;
Sender.Tell(_accBalance);
}
public void Credit(CreditAccMessage debitMessage)
{
_accBalance -= debitMessage.Amount;
Sender.Tell(_accBalance);
}
}
internal class CreditAccMessage
{
public CreditAccMessage(decimal amount)
{
Amount = amount;
}
public decimal Amount { get; private set; }
}
internal class DebitAccMessage
{
public DebitAccMessage(decimal amount)
{
Amount = amount;
}
public decimal Amount { get; private set; }
}
}
여기에 언급 된 액터 인스턴스의 유형은 무엇입니까? –
@AmalShalika .net에 대해서는 모르겠지만 scala에서는 PromiseActorRef입니다. 소스를보고 알아봐야합니다! 근원을 보는 것은 결코 아프지 않습니다 ... –