【发布时间】:2016-09-15 09:03:44
【问题描述】:
我有与 Couchbase 一起使用的微服务。我的服务必须询问 Couchbase 我有多少具有当前 ID 的文档:如果数量少,我创建另一个文档。
我的问题是这是非阻塞的:如果我第一次创建文档时有很多请求,那么第二个请求也显示文档数量很少(因为第一个还没有创建文档),所以另一个新文档被创建了。
为了解决这个问题,我在akka 中创建了一个actor 系统,每个id 一个actor,阻塞(使用Await)直到第一个完成。这给出了我想要的顺序。有没有更好的方法来做到这一点?
但是当我将 Kafka 生产者添加到这个“等待”未来时,我遇到了问题,当 kafka 关闭时,这个未来会阻塞很长时间,以至于我有等待超时。我把这个生产者放在 Future 中,但是在这之后我的 Executor Context 中没有很多线程。
【问题讨论】:
-
明确措辞;修正语法错误。
标签: multithreading scala akka nonblocking akka-http