Akka 控制类型的活动参与者的数量

Akka 控制类型的活动参与者的数量,akka,akka.net,Akka,Akka.net,有可能控制剧中活跃演员的数量吗?简而言之,我有一个名为authorizevisapaymentactor的参与者,它处理消息VisaPaymentMessage。我有一个并行循环,它发送10条消息,但我正在尝试创建一个允许3个参与者同时工作的东西,其他7条消息将被阻止,并等待一个参与者可用。这可能吗?我目前正在使用一个RoundRobin设置,我相信我误解了 var actor = sys.ActorOf( Props.Create<

有可能控制剧中活跃演员的数量吗?简而言之,我有一个名为
authorizevisapaymentactor
的参与者,它处理消息
VisaPaymentMessage
。我有一个并行循环,它发送10条消息,但我正在尝试创建一个允许3个参与者同时工作的东西,其他7条消息将被阻止,并等待一个参与者可用。这可能吗?我目前正在使用一个
RoundRobin
设置,我相信我误解了

            var actor = sys.ActorOf(
                Props.Create<AuthoriseVisaPaymentActor>().WithRouter(new RoundRobinPool(1)));

            actor.Tell(new VisaPaymentMessage(curr.ToString(), 9.99M, "4444"));
var actor=sys.ActorOf(
Props.Create().WithRouter(新RoundRobinPool(1));
actor.Tell(新VisaPaymentMessage(curr.ToString(),9.99M,“4444”);

要设置循环池/组,需要指定要使用的参与者路径。这既可以在代码中静态完成,也可以在代码中动态完成(见下文)。至于被阻止的邮件,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"));
//设置三个参与者
var actor1=sys.ActorOf(Props.Create());
var actor2=sys.ActorOf(Props.Create());
var actor3=sys.ActorOf(Props.Create());
//找到他们的路
var routees=new[]{actor1.Path.ToString(),actor2.Path.ToString(),actor3.Path.ToString()};
//使用路由器创建新的参与者
var router=sys.ActorOf(Props.Empty.WithRouter(新RoundRobinGroup(routees));
router.Tell(新的VisaPaymentMessage(curr.ToString(),9.99M,“4444”);