Актер (Акка) не получает сообщения после подключения БД

У меня очень простой актер записи базы данных только для написания некоторых записей в Mongo с Casbah, но он отказывается (без ошибок) получать какие-либо сообщения после подключения к БД. Если я удаляю код client и db vals от актера, он получает сообщения. Я также пытался инкапсулировать подключение к некоторому объекту, но он по-прежнему не работает после подключения к БД.

class DBWriter extends Actor with ActorLogging {
  val client = MongoClient(host, port)
  val db     = client(dbName)

  def receive = {
    case Write(collection, entry) => db(collection).save(entry)
  }
}

class StatisticsActor extends Actor with ActorLogging {
  val writer = context.actorOf(Props[DBWriter], "dbWriterActor")
  def receive = {
    case mes: SM => writer ! Write(....)
    case NoConnection => writer ! Write(....)
    case NCTime(time) => writer ! Write(....)
    ....
  }
  ....
}

Как это можно исправить?

0
@EmilIvanov Добавил некоторый код, да, я попытался найти причину в журналах, но нет ничего интересного, если я разместил некоторые сообщения журнала в построении, будут напечатаны, но не те, которые в DBWriters получают метод
добавлено автор 4lex1v, источник
@twillouer Connection в порядке, потому что другие части (а не актеры) работают нормально =)
добавлено автор 4lex1v, источник
@twillouer yes collection просто имя строки коллекции mongo, а запись - MongoDBObject. Проблема в том, что актер не получает/не реагирует на сообщения
добавлено автор 4lex1v, источник
@twillouer на самом деле вы были близки, у актера просто не хватило времени, чтобы ответить на сообщения, все тесты были переданы до момента, когда актер был готов что-то сделать
добавлено автор 4lex1v, источник
Просто догадаться, но использование исполнителя пула потоков для диспетчера событий может сделать трюк. См. документацию Akka .
добавлено автор pvorb, источник
Можем ли мы увидеть больше кода - где вы создаете актера и отправляете ему сообщение? Включили ли вы все регистрации akka (см. Главу в руководстве для этого)?
добавлено автор Emil Ivanov, источник
Да, я думаю, что соединение не работает на ваш MongoDB.
добавлено автор twillouer, источник
важная часть: «коллекция» и «запись» неизменяемы? или, по крайней мере, никогда не изменять другую часть? Вы можете добавить больше журналов, чтобы увидеть, где он заблокирован. Как «log.info (« соединение ok ») сразу после« client (dbName) »и log.info (« получать Write {}, {} », сбор, запись) до и после db (collection) .save (запись ).
добавлено автор twillouer, источник
для меня это похоже на то, что актер мертв (не соединяйтесь и не останавливайтесь). можете ли вы добавить больше журналов?
добавлено автор twillouer, источник

1 ответы

Нашел проблему. Это было довольно просто, проблема была в потоке, у актеров просто не хватило времени, чтобы подключиться к монго и написать ему, все тесты были переданы на тот момент.

0
добавлено
@PatrikNordwall Спасибо за совет
добавлено автор 4lex1v, источник
Обратите внимание, что экземпляр MongoClient фактически представляет собой пул соединений с базой данных. Если вы используете одну и ту же базу данных из других мест (других участников), вы должны использовать один и тот же экземпляр MongoClient.
добавлено автор Patrik Nordwall, источник
pro.jvm
pro.jvm
3 503 участник(ов)

Сообщество разработчиков Java Scala Kotlin Groovy Clojure Чат для нач-их: @javastart Наш сайт: projvm.com projvm.ru Наш канал: @proJVM Вакансии: @jvmjobs Конфы: @jvmconf

Scala User Group
Scala User Group
1 486 участник(ов)

[RU] Scala Chat. Rules, additional links, FAQ: https://telegra.ph/Russian-Speaking-Scala-User-Group-08-27

DBA - русскоговорящее сообщество
DBA - русскоговорящее сообщество
1 345 участник(ов)

Общаемся и обсуждаем темы, посвященные DBA, PostgreSQL, Redis, MongoDB, MySQL, neo4j, riak и т.д. См. также: @devops_ru, @kubernetes_ru, @docker_ru, @nodejs_ru Рекомендуем сразу отключить уведомления, чтобы пребывание здесь было полезным и комфортным.

MongoDB Russian
MongoDB Russian
1 086 участник(ов)

> db.stats() https://combot.org/chat/-1001035023078

Scala Jobs
Scala Jobs
852 участник(ов)

Rules: http://telegra.ph/My-lyudi-i-ehto-znachit-chto-nam-nuzhna-organizaciya-02-07 Main Scala Channel: https://t.me/scala_jobs_feed Flood Room: https://t.me/scala_ponv