2011-12-29 19 views
14

Tôi đang sử dụng Diễn viên Akka và tôi đang cố gắng cập nhật mã của mình để sử dụng mốc 2.0 mới nhất. API đã thay đổi một chút, ví dụ như việc tạo các diễn viên hiện hoạt động thông qua một cái gì đó gọi là ActorSystem.Làm cách nào để bắt đầu diễn viên Akka từ 2.0?

Các diễn viên bắt đầu và dừng cũng thay đổi - tùy chọn sau có sẵn thông qua các phương thức ActorSystems.stop(..).shutdown(). Nhưng tôi có thể cho cuộc sống của tôi không tìm ra cách để bắt đầu họ ... Tài liệu là tốt, nhưng dường như thiếu một số điểm quan trọng. Tôi cảm thấy ngớ ngẩn khi hỏi, nhưng làm thế nào để bạn bắt đầu diễn viên trong môi trường Akka 2.0 của bạn? Nếu tôi hiểu chính xác các diễn viên có một 'phụ huynh' được bắt đầu khi phụ huynh này được bắt đầu - nhưng những gì về (các) diễn viên cấp cao nhất?

Trả lời

26

Trong Akka 2.0, không cần phương thức start() vì các diễn viên được bắt đầu ngay sau khi bạn khởi tạo chúng trong ngữ cảnh ActorSystem (hoặc khác Actor) - nhưng bạn cần tạo nhanh chúng bằng một trong các phương pháp được cung cấp của ActorSystem hoặc Actor 's context.

Vì vậy, ví dụ, nếu bạn có một lớp con Actor gọi MyClass, bạn có thể bắt đầu với:

val system = ActorSystem() 
val myActor = system.actorOf(Props[MyActor]) 

hoặc, nếu diễn viên của bạn mất đối số nhà xây dựng:

val myActor = system.actorOf(Props(new MyActor("arg1")) 

hoặc, nếu bạn đã ở trong cơ thể của một diễn viên khác,

val myActor = context.actorOf(Props(new Actor("arg1")) 

và sau đó diễn viên của bạn có thể nhận được tin nhắn ngay lập tức, ví dụ:

myActor ! MyMessage 

Ngay cả các diễn viên cấp cao nhất của bạn cũng được bắt đầu ngay vì tất cả diễn viên trong 2.0 đều tự động trong hệ thống phân cấp giám sát. Ngay sau khi diễn viên được khởi tạo với ActorSystem, nó đã sẵn sàng nhận tin nhắn.

+0

Ồ, tôi đoán là thật dễ dàng để tôi hiểu ... * cảm giác ngớ ngẩn * Cảm ơn bạn :) – fgysin

+0

Không sao cả! Nó không phải là một câu hỏi ngu ngốc cả - hành vi mới dựa trên hai tính năng mới cùng một lúc (tự động giám sát và tự động bắt đầu) mà là khó hiểu lúc đầu nếu bạn đang sử dụng 1.2 hoặc 1.3 API. Nhưng nó đơn giản hơn một khi bạn đã quen với nó. –

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