我有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