是否可以控制游戏中活跃演员的数量?简而言之,我有一个名为AuthoriseVisaPaymentActor
的演员来处理消息VisaPaymentMessage
。我有一个发送10条消息的并行循环,但我正在尝试创建一些允许3个actor同时工作的东西,其他7条消息将被阻止并等待一个actor可用。这可能吗?我目前正在使用RoundRobin
设置,我相信我误解了..
var actor = sys.ActorOf(
Props.Create<AuthoriseVisaPaymentActor>().WithRouter(new RoundRobinPool(1)));
actor.Tell(new VisaPaymentMessage(curr.ToString(), 9.99M, "4444"));
答案 0 :(得分:0)
要设置循环池/组,您需要指定要使用的actor路径。这可以在hocon settings中静态完成,也可以在代码中动态完成(参见下文)。对于被阻止的消息,Akka的邮箱已经为您做到了;在处理当前处理的消息之前,它不会处理任何新消息。它只是将它们保持在队列中,直到演员准备好处理它。
// Setup the three actors
var actor1 = sys.ActorOf(Props.Create<AuthoriseVisaPaymentActor>());
var actor2 = sys.ActorOf(Props.Create<AuthoriseVisaPaymentActor>());
var actor3 = sys.ActorOf(Props.Create<AuthoriseVisaPaymentActor>());
// Get their paths
var routees = new[] { actor1.Path.ToString(), actor2.Path.ToString(), actor3.Path.ToString() };
// Create a new actor with a router
var router = sys.ActorOf(Props.Empty.WithRouter(new RoundRobinGroup(routees)));
router.Tell(new VisaPaymentMessage(curr.ToString(), 9.99M, "4444"));