Ich muss hier etwas falsch verstehen. Die docs sagen, dass die Standard-Mailbox soll unbegrenzt sein, aber nur um sicherzugehen ich explizite Konfiguration hinzugefügt:Akka Unbounded Mailbox scheint begrenzt zu sein
akka.actor.default-mailbox {
mailbox-type = "akka.dispatch.UnboundedMailbox"
}
Doch wenn ich 50 Nachrichten abfeuern wie folgt:
1 to 50 foreach { _ =>
myActorRef ! "myMessage"
}
ich 15 über Fehler:
ActorRefSourceActor - Dropping the new element because buffer is full and overflowStrategy is: [DropNew]
Was ist hier los?
EDIT:
@cmbaxter - Danke, du hast recht, ich über den Code ein wenig vereinfacht zu viel nicht zu realisieren, welcher Teil tatsächlich gebrochen war. Die fehlenden Stücke von Informationen waren:
myActorRef
bezieht sich eigentlich auf einen WebSocket Schauspieler Setup als here in der Play-Dokumentation beschrieben. Was Sie erwähnt haben, verwendet einen ActorFlow.- Die Nachricht an
myActorRef
ist nicht das Problem, aber es wiederum schreibt an den WebSocket, wo das Problem tatsächlich liegt.
Ich glaube, Sie einige Details hier verstecken. Es scheint, dass Sie Akka Streams verwenden und Ihren Akteur als 'Quelle' behandeln. Stream-Komponenten können keine unbegrenzte Pufferung haben und benötigen eine Strategie, wenn der Downstream-Druck beginnt, wie Sie hier sehen. Dies hat nichts mit der Mailbox-Beschränkung zu tun – cmbaxter