阅读Akka 2.6.10 API Docs ,我应该立即清楚akka.actor.typed.scaladsl.Behaviors.setup和之间的区别。akka.actor.typed.scaladsl.Behaviors.receive但事实并非如此。
文档网站提供了一些出色的示例,但我仍然花了很多心思才明白每个函数的预期目的,而这些目的从未真正明确说明过。
为了节省未来 Akka(Typed)新手的时间,我将尝试澄清这些行为定义函数之间的差异。这是基本内容,但对于理解其余内容很重要。
Behaviors.setup定义在执行之前不等待接收消息的行为。它只是在从它生成一个 actor 后立即执行它的主体。
Behavior[T]您必须从中返回 a ,这可能是消息处理行为。为此,您可能会使用Behaviors.receive或Behaviors.receiveMessage。(或者Behaviors.stopped,如果演员只需要完成一次工作,然后就消失。)
因为它无需等待即可执行,Behaviors.setup因此通常用于定义系统中第一个参与者的行为。在采用新的消息处理行为之前,它的初始行为可能会产生程序所需的下一批参与者。
Behaviors.receive定义消息处理行为。您向其传递一个函数,该函数具有参与者上下文的参数和包含消息的参数。根据此行为创建的 Actor在收到此行为可以处理的类型的消息之前不会执行任何操作。