【问题标题】:Is there anythig wrong with tell():ing other actors from a custom Akka router?告诉():从自定义 Akka 路由器中输入其他参与者有什么问题吗?
【发布时间】:2013-08-20 09:02:29
【问题描述】:

创建自定义 Akka 路由器(例如 http://doc.akka.io/docs/akka/snapshot/scala/routing.html#custom-router-scala)的示例显示路由器返回目标参与者/发送者对列表,以便告诉 Akka 将消息发送到哪些底层参与者。为什么简单地使用tell() 向那些actor 发送消息的actor 更喜欢这种模式?

具体来说,在路由器中使用 tell() 会不会有什么问题,可能是异步的,即稍后从另一个线程而不是调用路由函数的线程?

【问题讨论】:

    标签: routing akka actor


    【解决方案1】:

    1) 为什么简单地使用tell() 向那些actor 发送消息的actor 更喜欢这种模式?

    因为路由器的功能不仅仅是发送到路由(例如调整大小)。将确定路由的逻辑与路由消息所涉及的其余逻辑区分开来,这是一个很好的逻辑分离。这允许这些不同的部分相互独立地改变。此外,如果您只是开始在 createRoute 内部执行额外的 tells,那么这不是很实用,因为它是您应该尽量避免的副作用。

    2) 具体来说,在路由器中使用 tell() 会不会有什么问题,可能是异步的,即稍后从另一个线程而不是调用路由函数的线程?

    虽然这是可能的,但正如我上面提到的,这可能不是一个好主意。这种副作用可能极难测试,并且不适合功能范式。如果你真的需要这样的东西,那么也许只是使用 Actor 而不是 Router 来实现你的路由逻辑。路由器旨在为您提供一个简单的模型来适应执行路由。如果您的要求不适合此模型,则路由器可能不适合。

    【讨论】:

      猜你喜欢
      • 2016-03-29
      • 2014-11-22
      • 2017-05-16
      • 1970-01-01
      • 2021-11-16
      • 1970-01-01
      • 1970-01-01
      • 2023-01-14
      • 1970-01-01
      相关资源
      最近更新 更多