2013-11-20 6 views
6

Suchen nach Akka Actors, um Ereignisse zwischen Java-Threads in derselben JVM zu kommunizieren. Einige dieser Ereignisse enthalten große Objekte (10-100 MB). Ich möchte es vermeiden, diese Objekte zu serialisieren und gleichzeitig Speicherplatz zu sparen, indem ich nur einen Verweis auf das Objekt übergebe; Unterstützt Akka das? Ich verstehe, dass es möglich ist, implement einen benutzerdefinierten Akka Serializer, und das könnte eine Lösung sein, aber darüber hinaus weiß ich nicht viel mehr über das Framework.Unterstützt Akka Inprozessnachrichten ohne Objektserialisierung?

+0

Das Übergeben einer Referenz impliziert einen gemeinsamen Status zwischen Threads, was dem Message-Passing-Modell völlig ablehnend ist. –

+3

Ich weiß, aber die Objekte, die ich übergebe, enthalten unveränderliche Werte, es ist sinnlos, sie zwischen Akteuren zu serialisieren und neu zusammenzusetzen, also nehme ich an, die Antwort ist nein? – raffian

+0

Der gemeinsame Status ist kein Problem, solange er nicht veränderbar ist. Das Problem ist _shared mutable state_. Entweder teilen oder veränderlich und du bist auf einem festeren Boden. –

Antwort

6

Akka behandelt lokale Nachrichtenübergabe als eine Optimierung, die Remoting-Maschinerie umgeht, die den Nachrichtenserialisierer enthält. Siehe location transparency.

+1

Ich habe das gerade getestet, und Sie haben Recht; Das gesendete Objekt war das gleiche wie das Objekt, das basierend auf der Speicheradresse empfangen wurde. – raffian

+1

Gibt es einen Ort, an dem dies dokumentiert ist? – jhegedus