public class CustomerActor : ReceiveActor
{
private readonly string _name;
public CustomerActor(string name)
{
_name = name;
Receive(message => HandlePlaceOrder(message));
}
private void HandlePlaceOrder(PlaceOrderMessage message)
{
Console.WriteLine($"Customer {_name} placed order {message.OrderId}");
}
}
public class PlaceOrderMessage
{
public int OrderId { get; set; }
}
var actorSystem = ActorSystem.Create("MySystem");
var customerActorProps = Props.Create(() => new CustomerActor("Alice"));
var customerActorRef = actorSystem.ActorOf(customerActorProps, "Alice");
customerActorRef.Tell(new PlaceOrderMessage { OrderId = 123456 });
public class OrderActor : ReceiveActor
{
private readonly IImmutableList _orderIds;
public OrderActor(IImmutableList orderIds)
{
_orderIds = orderIds;
Receive(message => HandlePlaceOrder(message));
}
private void HandlePlaceOrder(PlaceOrderMessage message)
{
var newOrderIds = _orderIds.Add(message.OrderId);
// do something with newOrderIds
}
}
public class OrderPlacedMessage
{
public int OrderId { get; set; }
}
public class PaymentActor : ReceiveActor
{
public PaymentActor()
{
Receive(message => HandleOrderPlaced(message));
}
private void HandleOrderPlaced(OrderPlacedMessage message)
{
// process payment
}
}
public class OrderActor : ReceiveActor
{
private readonly IActorRef _paymentActor;
public OrderActor(IActorRef paymentActor)
{
_paymentActor = paymentActor;
Receive(message => HandlePlaceOrder(message));
}
private void HandlePlaceOrder(PlaceOrderMessage message)
{
// place order
var orderPlacedMessage = new OrderPlacedMessage { OrderId = message.OrderId };
_paymentActor.Tell(orderPlacedMessage);
}
}
通过使用Actor模型,不可变数据和避免共享状态,可以创建一个高性能、高可靠性和易