我有this演员参与并行字数计算。Akka演员意外清除其状态
它的状态:
private Map<String, Integer> wordCountMap = new HashMap<String, Integer>();
当它收到WordCountMapMessage
消息,它改变了状态,在它9 elements
:
{over=1, fell=1, fox=1, quick=1, tried=1, brown=1, lazy=1, dog=2, jump=1}
(there ismain class
为 - 如果你可以看到输出你启动它)
然后当它收到ResultMessage
,然后wordCountMap
是空的。
问:怎么会,突然它有空的地图/状态?
演员是否有可能以某种方式重新初始化其状态而没有消息通过?
- 更新: 如果我在AggregateWordCountActor
ovveride方法preStart
,那么我可以看到这样的输出:
预启动预启动预启动预启动预启动
它似乎开始5次!但它并没有推出preRestart
如果失败并且由其主管重新启动,此actor将初始化其状态。是否有可能导致未重新捕获的异常被重启?如果您覆盖preRestart并打印某些内容,您可以看到是否重新启动。 – cmbaxter
我做到了。 preRestart永远不会被调用。 – ses