阅读Akka 2.6.10 API Docs,akka.actor.typed.scaladsl.Behaviors.setup和akka.actor.typed.scaladsl.Behaviors.receive之间的区别对我来说应该一目了然。但事实并非如此。
documentation site提供了一些很好的示例,但我仍然花了很多时间来理解每个函数的预期用途,这从来没有真正明确地说明过。
为了节省未来的Akka (类型)新手的时间,我将尝试澄清这些行为定义函数之间的区别。这是基本的东西,但对于理解剩下的内容很重要。
发布于 2020-11-12 22:21:19
akka.actor.typed.scaladsl.Behaviors.setup
Behaviors.setup定义了在执行之前不等待接收消息的行为。它只是在从它派生出一个参与者之后立即执行它的主体。
您必须从中返回一个Behavior[T],这可能是一种消息处理行为。为此,您可能会使用Behaviors.receive或Behaviors.receiveMessage。(或者,如果参与者只需要做一次工作,则为Behaviors.stopped,然后消失。)
由于它无需等待即可执行,因此Behaviors.setup通常用于定义系统中第一个参与者的行为。在采用新的消息处理行为之前,它的初始行为可能负责产生您的程序将需要的下一代参与者。
akka.actor.typed.scaladsl.Behaviors.receive
Behaviors.receive定义了消息处理行为。您可以向它传递一个函数,该函数既有参与者上下文的参数,也有包含消息的参数。通过此行为创建的参与者在收到此行为可以处理的类型的消息之前将不会执行任何操作。
https://stackoverflow.com/questions/64805718
复制相似问题