【发布时间】:2021-04-18 09:53:20
【问题描述】:
所以我正在使用 Akka Typed,并希望将每个消息的 actor 生成到某个流中,根据文档,这似乎是不可能的:
- 警告:此方法不是线程安全的,不能从普通actor消息处理线程以外的线程访问,例如[[scala.concurrent.Future]]回调。
def spawn[U](behavior: Behavior[U], name: String, props: Props = Props.empty): ActorRef[U]
例子:
Behaviors.receiveMessage {
case StartConsume =>
context.log.info("Starting consume messages")
val source: Source[Int, NotUsed] = Source(1 to 10)
source.runForeach(x => context.spawn(Test(x), "Test"))
Behaviors.same
}
还有其他方法可以做到这一点吗?
【问题讨论】:
-
我不确定“为什么”,但您绝对可以在各自的流组件中创建任意数量的演员。只需使用图形组件 api 创建您的自定义流组件,然后在其中做任何您想做的事情。另外,您为什么要专门使用
spawn来创建您的演员?为什么不按正常方式创建它们? -
我是 akka 类型的新手,所以我如何创建演员而不是
spawn? -
据我所见,classic-actors 在 Akka 流中的表现更好。那么,在那个地方你真的需要一个打字演员吗?
标签: scala akka akka-typed