您是否应该避免Akka Actor中的易变状态?

我的标题

当前,我有一个actor,它接收一些消息并将该消息的内容保存到可变的类级变量中:

class MyActor extends Actor {

    val items1: Seq[Item] = _ 
    val items2: Seq[Item] = _

    def receive = {
       case Start(items1, items2) => 
         items1= items1
         items2 = items2

       case Result(...) => ...
    } 

    private  def method1(args...) = {
       // do something with items1 and items2
    }

    private  def method2(args...) = {
       // do something with items1 and items2
    }

}

而且我读到,创建多个receive函数并使用context.become/unbecome处理不同的状态真的很好因此,就我而言,我可以使用如下receive功能:

   def running(items1: Seq[Item], items2: Seq[Item]): Receive = {
      case Result(...) => ...
   }

   val waiting: Receive = {
       case Start(items1, items2) =>
          context.become(running(items1, items2))
          start( )
   }

在我看来,这种方法非常清晰,美观,但问题是我还有其他需要此方法变量的方法(method1method2唯一可能的解决方法我想到的是通过为功能,但是这种方法已经有2-3个参数,并增加更多的参数给他们会让他们难以阅读(其实我有2点以上的方法)。items1items2items1items2method1method2

那么,Akka是否有针对此类情况的模式?还是拥有类级别的vars(在我的第一个示例中)是相当“合法”的

塔布杜拉迪
So, is there any patterns in Akka for such cases? 

我什么都不知道。

Or it's pretty 'legal' to have class-level vars (as in my first example)?

可以有var内部演员,只要您不从关闭或期货访问它们即可。

但是,我建议您使用参数解决方案。如果参数列表变得很长,则可以考虑将其分组到case classes中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Akka actor中累积状态的正确模式

来自分类Dev

如何在F#Akka.NET Actor中存储状态?

来自分类Dev

您是否应该在FormClosing事件中处置项目?

来自分类Dev

您是否应该等待按钮中的Navigator呼叫

来自分类Dev

您是否应该在FormClosing事件中处置项目?

来自分类Dev

您是否应该将当前应用程序状态存储在数据库中?

来自分类Dev

您是否应该在每次活动中连接和断开与Google Play服务的连接?

来自分类Dev

您是否应该将setter函数传递到React挂钩的依赖项数组中?

来自分类Dev

您是否应该将所有内容都存储在CoreData中?

来自分类Dev

您是否应该忽略该类的属性已经指定的变量名中的信息?

来自分类Dev

Akka actor从数据库读取状态

来自分类Dev

Akka actor从数据库读取状态

来自分类Dev

在Akka Scheduler中关闭actor上下文是否安全?

来自分类Dev

Akka演员避免突变状态

来自分类Dev

Akka演员避免突变状态

来自分类Dev

您是否应该能够在具有相同名称的differnet文件中声明两个私有变量?

来自分类Dev

您是否应该能够在具有相同名称的differnet文件中声明两个私有变量?

来自分类Dev

Akka是否缓存actor调用?

来自分类Dev

通过fsharp中的模式匹配和按位组合枚举标志来避免“干净易变”

来自分类Dev

您是否应该避免在JOIN的ON语句中混合使用列和参数比较?

来自分类Dev

从将来更新actor中的状态

来自分类Dev

从将来更新actor中的状态

来自分类Dev

如何在Akka Actor中实现receive()

来自分类Dev

在IDE中逐行调试特定的Akka actor?

来自分类Dev

最佳实践 - akka actor 中的辅助方法

来自分类Dev

Akka actor 中的接收方法

来自分类Dev

在Java中,是否需要在InterruptedException之后调用解锁,还是应该避免解锁?

来自分类Dev

错误TS2794:应该有1个参数,但有0个参数。您是否忘了在类型变量“ Promise”中包含“ void”?

来自分类Dev

您是否缺少对unregisterReceiver()的调用?在Android中

Related 相关文章

  1. 1

    在Akka actor中累积状态的正确模式

  2. 2

    如何在F#Akka.NET Actor中存储状态?

  3. 3

    您是否应该在FormClosing事件中处置项目?

  4. 4

    您是否应该等待按钮中的Navigator呼叫

  5. 5

    您是否应该在FormClosing事件中处置项目?

  6. 6

    您是否应该将当前应用程序状态存储在数据库中?

  7. 7

    您是否应该在每次活动中连接和断开与Google Play服务的连接?

  8. 8

    您是否应该将setter函数传递到React挂钩的依赖项数组中?

  9. 9

    您是否应该将所有内容都存储在CoreData中?

  10. 10

    您是否应该忽略该类的属性已经指定的变量名中的信息?

  11. 11

    Akka actor从数据库读取状态

  12. 12

    Akka actor从数据库读取状态

  13. 13

    在Akka Scheduler中关闭actor上下文是否安全?

  14. 14

    Akka演员避免突变状态

  15. 15

    Akka演员避免突变状态

  16. 16

    您是否应该能够在具有相同名称的differnet文件中声明两个私有变量?

  17. 17

    您是否应该能够在具有相同名称的differnet文件中声明两个私有变量?

  18. 18

    Akka是否缓存actor调用?

  19. 19

    通过fsharp中的模式匹配和按位组合枚举标志来避免“干净易变”

  20. 20

    您是否应该避免在JOIN的ON语句中混合使用列和参数比较?

  21. 21

    从将来更新actor中的状态

  22. 22

    从将来更新actor中的状态

  23. 23

    如何在Akka Actor中实现receive()

  24. 24

    在IDE中逐行调试特定的Akka actor?

  25. 25

    最佳实践 - akka actor 中的辅助方法

  26. 26

    Akka actor 中的接收方法

  27. 27

    在Java中,是否需要在InterruptedException之后调用解锁,还是应该避免解锁?

  28. 28

    错误TS2794:应该有1个参数,但有0个参数。您是否忘了在类型变量“ Promise”中包含“ void”?

  29. 29

    您是否缺少对unregisterReceiver()的调用?在Android中

热门标签

归档