加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

ACTOR中不允许出现阻塞

发布时间:2020-12-16 09:37:51 所属栏目:安全 来源:网络整理
导读:因为actor接收请求的速度很快,如果出现阻塞(如IO操作)会耗时,接收请求的速度超过程序处理的速度就可能会导致内存溢出。如果中间需要连接数据库的话,数据库操作需要在Future中进行,然后为Future分配线程池,来保证数据库的操作无阻塞进行。 例如定义一
因为actor接收请求的速度很快,如果出现阻塞(如IO操作)会耗时,接收请求的速度超过程序处理的速度就可能会导致内存溢出。如果中间需要连接数据库的话,数据库操作需要在Future中进行,然后为Future分配线程池,来保证数据库的操作无阻塞进行。 例如定义一个接口 trait IAsyncDB{ protected val executionContext: ExecutionContextExecutor = ExecutionContext.fromExecutor(new ForkJoinPool(128)) /** * 异步执行dao方法 * * @param body dao的方法 * @tparam T 返回类型 * @return */ def async[T](body: => T): Future[T] = Future(body)(executionContext) } 然后在有数据库操作的类中继承这个接口,数据库操作调用async方法: class UserService(userDao:UserDao) extends Actor with IAsyncDB{ override def receive: Receive = { case "find" => async(userDao.find) case "other"=> println("hahahahaha") } }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读