2017-08-08 62 views
0

看着我的日誌文件,我看到了同一個演員的不同調度員。那個演員是一次創造的,所以它怎麼可能?這是否意味着演員由於崩潰而重新啓動? 例如:同一個演員的不同調度員

[錯誤] [2017年8月7日19:20:22.618] [我-SYS-akka.actor.default-調度-21] [阿卡://我-SYS /用戶/ com.domain.FooActor] some_exception

[錯誤] [2017年8月7日19:20:22.619] [我-SYS-akka.actor.default-調度-26] [阿卡://我的-SYS /用戶/ com.domain.FooActor] some_exception

[錯誤] [2017年8月7日19:20:22.619] [我-SYS-akka.actor.default-調度-27] [阿卡:/ /my-sys/user/com.domain.FooActor] some_exception

+0

難道那些只是默認調度程序的不同線程嗎? –

+0

是的。可以通過查看日誌記錄conf來輕鬆檢查。 – cchantep

+0

@FredericA。演員創建一次。你能詳細說明一下嗎? – igx

回答

0

我很確定您的記錄器配置爲記錄生成日誌的線程。檢查你的記錄器配置,但我想在第三個位置,你記錄線程(上述日誌中的線程名稱:my-sys-akka.actor.default-dispatcher-XX)。

調度程序將安排您的任務在線程池上運行。根據定義,池可以有多個線程,並且通過日誌,您可以看到您的actor的執行時間安排在屬於單個調度程序的不同線程上。

對於給定的日誌,沒有清楚地表明您的角色崩潰/重新啓動,只是表明它(或其主管)在不同線程上運行時稱爲日誌方法(即log.error())。這是預期的,因爲多個(可能是數百萬)參與者共享一些線程(在缺省調度器取決於CPU,核心數量的情況下)。

你不應該期待你的演員總是在同一個線程上運行。

行爲者無法在另一個調度器上運行(除非以這種方式明確配置)。