Actor(Akka)在数据库连接后未接收消息



我有一个非常简单的数据库编写器角色,只用于用Casbah向Mongo写入一些条目,但它在连接到DB后拒绝(没有错误)接收任何消息。如果我要从actor中移除clientdb vals,它将接收消息。我还试图封装到某个对象的连接,但在连接到DB之后仍然无法工作。

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(....)
    ....
  }
  ....
}

如何修复?

发现问题。这很简单,问题出在线程上,演员们没有足够的时间连接到mongo并对其进行写入,所有的测试都通过了。

最新更新