本節主要内容:
actor api解析
actor中的主要成員變量和方法定義如下:
代碼運作結果:
在代碼
中分别對poststop、prestart方法進行了重寫,在prestart方法中通過代碼
對成員變量child進行初始化,然後在poststop方法中使用
停止myactor的運作。在使用代碼
建立firstactor時,便會調用prestart方法完成myactor的建立,是以首先會執行firstactor中的prestart()方法
然後在建立myactor時執行myactor中定義的prestart方法
在執行
firstactor作為myactor的supervisor,會先停止myactor,再停止自身,是以先調用myactor的poststop方法,再調用firstactor的poststop方法。
整體代碼如下:
運作結果:
代碼:
中使用
向自身發送了一條消息,receive方法通過
對這條消息進行處理。receive方法在處理
“test”消息時,會調用
向sender(本例中為firstactor)發送”message from myactor”消息,firstactor使用
處理消息時又向myactor回送該消息,是以最終的輸出有兩個unknown message,分别對應123和”message from myactor”
unhandled方法用于處理沒有被receive方法處理的消息,下面的代碼給出的是當不重寫unhandled方法時的代碼
代碼輸出:
不難看出,對于
發送的這條消息沒有被處理,沒有任何的處理邏輯。在實際開發過程中,可能會對不能被處理的消息增加一些應對邏輯,此時可以重寫unhandled方法,代碼如下:
代碼輸出結果:
其它如prerestart等方法的使用将在akka容錯部分進行講解。
scala學習(公衆微信号:scalalearning)每天為大家帶來一點scala語言、spark、kafka、flink、akka等大資料技術幹貨及相關技術資訊。技術永無止境,勇攀高峰,一往直前!
覺得文章不錯?掃描關注
