2013-09-05 56 views
5

Nếu tôi được gọiviệc gửi tin nhắn Từ Non-diễn viên trong Akka

actorRef.tell("MSG", null); 

Từ một tổ chức phi diễn viên

là nó vẫn chủ đề an toàn? Và không đồng bộ như hoàn thành ngay lập tức?

Thông báo là không thay đổi.

Về cơ bản mã của tôi là:

class NonActor { 
    .... 

    public void tellTest() { 

     actorRef.tell("MSG", null); 
    } 
} 
+0

Mã của bạn là gì? – gparyani

Trả lời

5

Về cơ bản actorRef.tell("MSG", null); tạo ra một kỷ lục như

(actorRef, Envelope(msg, sender)) 

và đặt nó vào hàng đợi thông điệp ActorSystem 's. Do đó, tell không được liên kết với diễn viên theo bất kỳ cách nào. Chính phương thức tell chắc chắn là an toàn chỉ.

+0

Đó là những suy nghĩ của tôi về công việc của nó là tốt, và quả thật vậy. Tìm thấy trong các tài liệu và xác nhận một vài ngày trước đây. – BAR

1

Cho dù đó là thread-safe phụ thuộc vào phần còn lại của ứng dụng của bạn. Các diễn viên vốn không an toàn; bạn có thể chia sẻ trạng thái có thể thay đổi giống như bạn có thể với bất kỳ thực thể ứng dụng nào. Nhưng cuộc gọi tell sẽ trở lại ngay lập tức vì cuộc gọi không đồng bộ.

+0

Ý của bạn có phụ thuộc vào chính thư đó không? Miễn là nó không thay đổi? – BAR

+0

Miễn là thông điệp không thay đổi và diễn viên không sử dụng bất kỳ trạng thái có thể thay đổi được chia sẻ nào. –

0

Giá trị rỗng là người gửi có nghĩa là tác nhân nhận không thể thực thi người gửi(). Tell() để trả lời tin nhắn của bạn.

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