0

Guava を生成する Datastax ドライバーを使用して Cassandra にアクセスする Finatra アプリケーションがありますFutures。変換は次のコードで行われます

import com.google.common.util.concurrent.{FutureCallback, Futures, ListenableFuture}
import com.twitter.util.{Future, Promise}

implicit def toTwitterFuture[A](f: ListenableFuture[A]): Future[A] = {
  val p = Promise[A]()

  val callback = new FutureCallback[A] {
    override def onSuccess(result: A): Unit = p.setValue(result)

    override def onFailure(t: Throwable): Unit = p.setException(t)
  }

  Futures.addCallback(f, callback)
  p
}

問題は、この変換の後、Cassandra ドライバーによって作成されたスレッド プールで残りの要求処理が行われ、他の I/O タスクがブロックされる可能性があることです。この種の CPU を集中的に使用する作業を行う必要がある Finagle のエグゼキュータにアクセスするにはどうすればよいですか?

4

0 に答える 0