tailable集合和枚举器的插件性能问题

时间:2014-07-15 08:35:14

标签: scala playframework-2.0 reactivemongo

我创建了一个简单的Play插件来创建用户通知。 这是通过使用一个有效的,有能力的集合来完成的。

lazy val unprocessed: Future[Enumerator[Event]] = {

  for {
    coll <- collection
  } yield coll.find(Json.obj("processed" -> false))
      .options(QueryOpts().tailable.awaitData)
      .cursor[Event]
      .enumerate()
}

插件在应用程序启动时启动,并使用带有此枚举器的Iteratee

val itr = Iteratee.foreach[Event](e => {
    // Intentionally left empty for now 
})
EventDao.unprozessed map(_.apply(itr))

这个代码的所有请求 - 也是那些不接触这里使用的集合/枚举器的请求将比以前慢至少5倍。 我已经尝试将上述两个段移到新的执行上下文中,但这没有用。 一旦我评论EventDao.unprozessed,速度就会恢复正常。所以似乎运行时被占用了,看着可用的集合。

幕后发生了什么?

0 个答案:

没有答案