2013-05-02 25 views

Trả lời

25

Không, vì việc tạo diễn viên diễn ra không đồng bộ, một người nào đó có thể đã enqueued một thông điệp trước nhà xây dựng hoặc preStart thực sự chạy. Nếu bạn cần phải đảm bảo xử lý thông điệp này trước bất kỳ khác sau đó bạn sẽ cần phải sử dụng becomestash:

self ! SomeMessage 

def receive = initial 

def initial: Receive = { 
    case SomeMessage => 
    // do stuff 
    unstashAll() 
    context become initialized 
    case _ => stash() 
} 

def initialized: Receive = { 
    // your normal behavior 
} 

Bạn sẽ cần phải trộn theo akka.actor.Stash đặc điểm và cấu hình diễn viên này sử dụng một DequeBasedMailbox .

Các vấn đề liên quan