2014-11-03 15 views
8

Tôi đang làm việc với Akka và chúng tôi vẫn đang tìm cách làm quen với nhau.Akka dispatcher thừa kế

kịch bản của tôi là: Tôi đã chọn một điều phối không phải mặc định cho một người giám sát (mẹ) diễn viên ai là vai trò là quản lý (giám sát) và tạo diễn viên nhí để làm việc.

Câu hỏi: Diễn viên con có kế thừa diễn viên của cha mẹ không?

Tôi biết rằng bạn có thể rõ ràng chỉ định người điều phối khác cho diễn viên trẻ từ diễn viên chính được chỉ định trong cấu hình.

akka.actor.deployment { 
    /my-parent-actor { 
    dispatcher = dispatcher-for-parent 
    } 

    "/my-parent-actor/*" { 
    dispatcher = dispatcher-for-children 
    } 
} 

Câu hỏi của tôi là về nếu bạn chỉ định các diễn viên phối phụ huynh, mà không chỉ định rõ một điều phối cho các diễn viên trẻ, có thừa kế cho con cái của nam diễn viên của cha mẹ.

Trả lời

14

Từ những gì tôi đã thấy, đứa trẻ sẽ không kế thừa người giám sát của phụ huynh theo mặc định. Tôi không thể tìm thấy điều này một cách rõ ràng trong tài liệu bất cứ nơi nào, vì vậy tôi đã viết một mảnh nhanh chóng mã để xác minh giả định ban đầu của tôi:

import com.typesafe.config.ConfigFactory 
import akka.actor._ 

object DispatcherTest extends App{ 

    val conf = ConfigFactory.parseString(""" 
     { 
      my-custom-dispatcher { 
      executor = "thread-pool-executor" 
      type = PinnedDispatcher   
      } 
     } 
    """) 

    val system = ActorSystem("test", conf) 
    val supervisor = system.actorOf(Props[MySupervisor].withDispatcher("my-custom-dispatcher")) 

} 

class MySupervisor extends Actor{ 
    println(s"I am the supervisor, my dispatcher is: ${context.dispatcher}") 
    val child = context.actorOf(Props[MyChild]) 
    def receive = { 
    case _ =>  
    } 
} 

class MyChild extends Actor{ 
    println(s"I am the child, my dispatcher is: ${context.dispatcher}") 
    def receive = { 
    case _ => 
    } 
} 

Nếu bạn chạy này, bạn sẽ thấy:

I am the supervisor, my dispatcher is: PinnedDispatcher[my-custom-dispatcher] 
I am the child, my dispatcher is: Dispatcher[akka.actor.default-dispatcher] 
+0

Nhờ đống . Câu trả lời chính xác! Thật là tốt trong giai đoạn quen thuộc với Akka này để tương quan với những gì tôi thấy với người khác có kết quả tương tự. Cảm ơn một lần nữa !! – neurozen