使用akka可以不用任何配置,akka提供了明智的預設配置。為了适應特别的運作環境,修改預設行為,你可能需要修改:
log level and logger backend
enable remoting
消息系列化
路由設定
排程器調優
akka的所有配置資訊裝在 actorsystem的執行個體中, 或者換個說法, 從外界看來, actorsystem 是配置資訊的唯一消費者. 在構造一個actor系統時,你可以傳進來一個 config object,如果不傳,就相當于傳進來 configfactory.load() (使用正确的classloader). 這意味着将會讀取classpath根目錄下的所有<code>application.conf</code>,
<code>application.json</code> and <code>application.properties</code>這些檔案—請參閱之前推薦的文檔以了解細節. 然後actor系統會合并classpath根目錄下的 reference.conf 來組成其内部使用的預設配置
appconfig.withfallback(configfactory.defaultreference(classloader))
其中的哲學是代碼不包含預設值,而是依賴于随庫提供的 reference.conf 中的配置.
系統屬性中覆寫的配置具有最高優先級,見 hocon 規範 (靠近末尾的位置). 要提醒的是應用配置—預設為 application—可以使用 config.resource 中的屬性來覆寫 (更多細節參閱 配置文檔).
注意 如果你編寫的是一個akka應用,把配置放在classpath根目錄下的 application.conf 中. 如果你編寫的是一個基于akka的庫,把配置放在jar包根目錄下的 reference.conf 中.
警告 akka會讀取所有jar包的reference.conf配置,是以如果你把多個jar包合并成一個jar,那麼你也必須合并這些reference.conf,否則預設配置會丢失,導緻akka不能正常工作
一個<code>application.conf</code>可能看起來是這樣:
可以将配置include進來。比如有一個通用的環境配置<code>application.conf</code>,我們隻需要覆寫掉其中的個别變量,以滿足特殊環境的需求
通過<code>-dconfig.resource=/dev.conf</code>加載<code>dev.conf</code>配置檔案,這個配置檔案會加載<code>application.conf</code>
dev.conf:
如果系統屬性或配置屬性 akka.log-config-on-start 設定為 on, 那麼當actor系統啟動時整個配置的日志級别為info. 這在你不确定使用哪個配置時會有用。
如果有疑問,你也可以在用它們構造一個actor系統之前或之後很友善地了解配置對象的内容:
每一條設定之前的注釋給出了原有設定的詳情資訊 (檔案和行号) 以及(e.g. 在參考配置中)可能出現的注釋,與參考配置合并并被actor系統解析的設定可以這樣顯示: