Я использую Play Framework 2.1.1 с внешней java-библиотекой, которая создает java.util.concurrent.Future результат. Я использую будущее scala, а не Akka, которое, я думаю, правильно, как в Play 2.1. Как я могу обернуть java.util.concurrent.Future в файл scala.concurrent.Future, сохраняя при этом код без блокировки?scala.concurrent.Future обертка для java.util.concurrent.Future
def geConnection() : Connection = {
// blocking with get
connectionPool.getConnectionAsync().get(30000, TimeUnit.MILLISECONDS)
}
Приведенный выше код возвращает соединение, но использует получить так, что становится блокирующим
def getConnectionFuture() : Future[Connection] = {
future {
// how to remove blocking get and return a scala future?
connectionPool.getConnectionAsync().get(30000, TimeUnit.MILLISECONDS)
}
}
В идеале я хочу функцию SCALA, которая возвращает соединение в качестве будущего как код выше, но без кода блокировки через get. Что еще мне нужно, чтобы включить функцию, чтобы она не блокировалась.
Любые указатели были бы замечательными.
Какую версию Scala вы используете? Начиная с 2.10.x, Scala приняла «Будущее Акки» как свое собственное. –
Play 2.1.1 использует Scala 2.10.0 под обложками –