Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 在另一个演员中创建Akka演员_Scala_Akka - Fatal编程技术网

Scala 在另一个演员中创建Akka演员

Scala 在另一个演员中创建Akka演员,scala,akka,Scala,Akka,我创建一个参与者A。当我向A发送消息时,receive方法尝试创建一个参与者B。当我运行一段代码调用: context.system.actorOf(Props[B], "B") 我得到一个例外: InvalidActorNameException: actor name [B] is not unique! 您知道发生这种情况的原因吗?其中一部分是传递给system.actorOf或context.actorOf的名称,如果您使用actorOf的变体,则其名称在actor系统中必须是唯一的

我创建一个参与者A。当我向A发送消息时,receive方法尝试创建一个参与者B。当我运行一段代码调用:

context.system.actorOf(Props[B], "B")
我得到一个例外:

InvalidActorNameException: actor name [B] is not unique!
您知道发生这种情况的原因吗?

其中一部分是传递给system.actorOf或context.actorOf的名称,如果您使用actorOf的变体,则其名称在actor系统中必须是唯一的。您可能正在向参与者A发送多条消息:每次参与者A收到此消息时,它都会尝试创建一个名为B的顶级参与者B。或者干脆删除该名称

context.system.actorOf(Props[B])
…或向名称添加唯一标识符。例如:

val uuid = java.util.UUID.randomUUID.toString
context.system.actorOf(Props[B], s"B-${uuid}")
作为旁注,顶级演员,即通过system.actorOf创建的演员,应谨慎制作,如以下建议:

顶级参与者是错误内核的最内部部分,所以要谨慎地创建它们,并且更喜欢真正的分层系统。考虑到配置的粒度和性能,这在故障处理方面有好处,并且还减少了guardian actor的压力,如果过度使用,这是一个单点争用

如果您的目的是在每次actor a收到消息时创建一个actor B作为actor a的子级,则使用context.actorOf.

其中一部分是传递给system.actorOf或context.actorOf的名称,如果您使用的actorOf变体的名称在actor系统中必须是唯一的。您可能正在向参与者A发送多条消息:每次参与者A收到此消息时,它都会尝试创建一个名为B的顶级参与者B。或者干脆删除该名称

context.system.actorOf(Props[B])
…或向名称添加唯一标识符。例如:

val uuid = java.util.UUID.randomUUID.toString
context.system.actorOf(Props[B], s"B-${uuid}")
作为旁注,顶级演员,即通过system.actorOf创建的演员,应谨慎制作,如以下建议:

顶级参与者是错误内核的最内部部分,所以要谨慎地创建它们,并且更喜欢真正的分层系统。考虑到配置的粒度和性能,这在故障处理方面有好处,并且还减少了guardian actor的压力,如果过度使用,这是一个单点争用

如果您的目的是在参与者a每次收到消息时创建一个参与者B作为参与者a的子级,那么请使用context.actorOf