2012-02-20 38 views
5

Trong Akka 2.0, có cách nào tốt đẹp để tắt tất cả các tác nhân theo đường dẫn/người dùng không? Ví dụ: giả sử rằng tôi làm như sau:dừng tất cả các tác nhân trong một hệ thống mà không cần tắt hệ thống?

val system = ActorSystem.create("mySystem") 

system.actorOf(Props(new MyActor1), "actor1") 
system.actorOf(Props(new MyActor2), "actor2") 

Một thời gian sau, tôi quyết định dừng tất cả các tác nhân trong hệ thống. Nếu tôi hiểu mọi thứ một cách chính xác, diễn viên1 và actor2 sẽ là con của đường dẫn/người dùng, nhưng tôi không thấy một phương thức cho phép tôi lặp lại các con của ActorRef. Có cách nào khác không?

+4

Bạn có thể không muốn tạo ra rất nhiều diễn viên dưới gốc trực tiếp, vì đó tạo ra một cây rất nông nhưng rộng. Tạo một cấp độ đầu tiên, và sau đó PoisonPill rằng một trong những? –

+0

Ban đầu tôi nghĩ điều này không áp dụng cho vấn đề của mình, nhưng sau khi cân nhắc kỹ hơn, tôi nghĩ rằng một lớp diễn viên khác có thể theo thứ tự. Về cơ bản, tôi quản lý các kết nối cho một dịch vụ và các kết nối được treo trực tiếp từ hệ thống diễn viên. Tôi tin rằng tôi sẽ thêm hỗ trợ cho vùng chứa kết nối. Cảm ơn! – jxstanford

+0

Bạn được chào đón nhiều nhất :-) –

Trả lời

12

Sử dụng một lựa chọn diễn viên để gửi một PoisonPill cho tất cả các diễn viên cấp cao nhất:

system.actorSelection("/user/*") ! PoisonPill 
Các vấn đề liên quan