當我們按照這個問題手動創建路線時,我問Possible to specify custom Routees or custom constructor arguments for each Actor。在需要重新啓動routee時如何處理監督?當爲路由器手動創建路由時,監管策略如何重新啓動?
0
A
回答
2
Routees由池路由器創建將作爲路由器的孩子被創建。因此路由器也是兒童監督員。
路由器角色的監督策略可以使用池的supervisorStrategy屬性進行配置。如果未提供配置,則路由器默認爲「始終升級」策略。這意味着錯誤將傳遞給路由器的主管進行處理。路由器的主管將決定如何處理任何錯誤。
請注意,路由器的管理員會將錯誤視爲路由器本身的錯誤。因此,停止或重新啓動的指令會導致路由器本身停止或重新啓動。反過來,路由器將導致其孩子停止並重新啓動。
應該提及的是,路由器的重啓行爲已被覆蓋,因此在仍然重新創建子項的情況下重啓將仍然保留池中相同數量的actor。
這意味着如果您沒有指定路由器或其父母的supervisorStrategy,則路由器中的故障將升級到路由器的父路由器,默認情況下會重新啓動路由器,從而重新啓動所有路由(它使用升級並且在重啓期間不停止路由)。原因是使默認行爲是這樣的,即將Router添加到孩子的定義中並不會改變應用於孩子的監督策略。這可能是一種效率低下的情況,您可以通過在定義路由器時指定策略來避免這種情況。
制定戰略是很容易做到:
final SupervisorStrategy strategy =
new OneForOneStrategy(5, Duration.create(1, TimeUnit.MINUTES),
Collections.<Class<? extends Throwable>>singletonList(Exception.class));
final ActorRef router = system.actorOf(new RoundRobinPool(5).
withSupervisorStrategy(strategy).props(Props.create(Echo.class)));
相關問題
- 1. 當遠程JVM /進程重新啓動時自動重新創建路由器遠程路由
- 2. 如何重新加載當前的鐵路:路由器路由?
- 3. ELB路由策略?
- 4. Angularjs路由手動刷新
- 5. erlang監督員重新啓動策略
- 6. 有條件地爲angular2路由應用路由器重用策略
- 7. .NET MVC路由 - catchall在路由啓動?
- 8. Laravel動態重新路由
- 9. Symfony2:動態創建路由
- 10. 分層MVC路由策略
- 11. ASP.Net MVC路由策略
- 12. 如何動態創建codeigniter路由?
- 13. 當路由屬性更新時,Aurelia路由器router.navigation不刷新
- 14. 在重新啓動命令路由器重置Openwrt Caos Calmer 15.05
- 15. 陣營路由器 - 動態路由 - 通過路由器
- 16. React路由器 - 動態路由設置
- 17. Ember路由器動態路由
- 18. Zend Framework路由器動態路由
- 19. 角UI路由器動態路由
- 20. 如何爲目錄項目創建動態路由器
- 21. 忽略路由的路由
- 22. 骨幹路由,backbone.history啓動後的多個路由器
- 23. 新手MVC路由
- 24. 產卵路由器停止時路由器重新加載,任何方式有自動重新產卵後,路由器重新加載起來
- 25. jQueryMobile和骨幹 - 如何加載「路由器/移動路由器」
- 26. 如何保存的路由表重新啓動在Fedora 18名
- 27. 如何在Aurelia中停止並重新啓動路由
- 28. 如何使用角度2路由器重新加載當前路由
- 29. React路由器:在動態路由刷新錯誤中嵌套靜態路由
- 30. Bash和expect:無法通過telnet重新啓動路由器