2013-09-05 6 views
5

Wenn ichSenden von Nachrichten aus Nicht-Schauspieler in Akka

actorRef.tell("MSG", null); 

Von einem Nicht-Schauspieler

Ist es noch Thread-sicher zu nennen war? Und async wie in wird sofort abgeschlossen?

Die Nachricht ist unveränderlich.

Grundsätzlich ist mein Code:

class NonActor { 
    .... 

    public void tellTest() { 

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

Wie lautet Ihr Code? – gparyani

Antwort

5

Grundsätzlich actorRef.tell("MSG", null); erzeugt eine Aufzeichnung wie

(actorRef, Envelope(msg, sender)) 

und es in ActorSystem ‚s-Nachrichtenwarteschlange. Somit ist tell in keiner Weise mit dem Schauspieler verbunden. Die tell Methode selbst ist zweifellos thread-safe.

+0

Das waren meine Gedanken über seine Funktionsweise, und tatsächlich ist es. Gefunden in den Dokumenten und bestätigt vor ein paar Tagen. – BAR

1

Ob es Thread-sicher auf den Rest Ihrer Anwendung abhängt. Schauspieler sind nicht von Natur aus threadsicher; Sie können den veränderbaren Zustand genau so wie mit einer anderen Anwendungsentität teilen. Aber der tell Aufruf wird sofort zurückgeben, weil es asynchron ist.

+0

Meinst du, hängt von der msg selbst ab? Solange es unveränderlich ist? – BAR

+0

Solange die msg unveränderlich ist und der Akteur keinen gemeinsamen veränderbaren Zustand verwendet. –

0

Die Null als Absender bedeutet, dass der empfangende Akteur sender(). Tell() nicht ausführen kann, um Ihre Nachricht zu beantworten.

Verwandte Themen