2016-06-16 1 views
1

Должно быть, я что-то не понимаю. Документы говорят, почтовый ящик по умолчанию должен быть неограниченным, но только, чтобы убедиться, что я добавил конкретной конфигурации:Akka Безграничный почтовый ящик, кажется, ограничен

akka.actor.default-mailbox { 
    mailbox-type = "akka.dispatch.UnboundedMailbox" 
} 

Но когда я выпалить 50 сообщений следующим образом:

1 to 50 foreach { _ => 
    myActorRef ! "myMessage" 
} 

Я получаю около 15 ошибки:

ActorRefSourceActor - Dropping the new element because buffer is full and overflowStrategy is: [DropNew] 

Что здесь происходит?

EDIT:

@cmbaxter - Спасибо, вы правы, я более упростил код немного слишком много, не понимая, какая часть была фактически нарушена. Недостающие части информации были:

  • myActorRef на самом деле относится к установке актера WebSocket, как описан в стыковых документации here. Что, как вы упомянули, использует ActorFlow.
  • Сообщение myActorRef не является проблемой, но оно, в свою очередь, записывает в WebSocket, где на самом деле лежит проблема.
+2

Я думаю, что вы скрываете некоторые подробности здесь. Кажется, вы используете Akka Streams и относитесь к своему актеру как к «Источнику». Компоненты Stream не могут иметь неограниченную буферизацию и нуждаются в стратегии, когда нисходящий поток начинает оказывать давление, как вы видите здесь. Это не имеет никакого отношения к ограничению почтового ящика – cmbaxter

ответ

0

Теперь, когда я понимаю, откуда оно взялось, исправление было довольно тривиальным. я просто увеличил размер буфера ActorFlow, который, как правило, по умолчанию 16, например:

ActorFlow.actorRef(MyActor.props(), 10000) 

 Смежные вопросы

  • Нет связанных вопросов^_^