reactivecouchbase非同期データベースドライバを使用し始めましたが、いくつかの基本的な設計上の問題が発生しています。 従来のアプローチでは、データベースへの接続数を制限することでデータベースにかかる負荷を制限しました。しかし、私は非同期ドライバを使用して、新しいクエリでデータベースを変えることはできますか?akka-streamsマップで非同期ドライバを使用する方法mapAsync
これが重要になったのは、次のような例です。
私はデータベースを呼び出す方法が2通りあると言います。
My機能は、DBへの呼び出し:
asyncCallDB: Future[DBResponse]
blockingCallDB: DBResponse
は、今私は、私は2つの異なる機能を使用することができ、ストリームを超えるデシベルの呼び出しをマップする:
Flow.map()
Flow.mapAsync(numberOfConcurrentCalls)()
今私の質問どのように希望ですデータベースを呼び出すように選択してください:
Flow.map(blockingCallDB) //One call at a time with back preassure
Flow.map(asyncCallDB) //Unlimited calls floods db no back pressure?
Flow.mapAsync(numberOfConcurrentCalls)(blockingCallDB) //Up to numberOfConcurrentCalls at the same time with back pressure
Flow.mapAsync(numberOfConcurrentCalls)(asyncCallDB) //Unlimited calls floods db no back pressure?
私はここに不足していると感じていますこの種の死刑を立てる。
[マップとmapAsyncの違い](http://stackoverflow.com/questions/35146418/difference-between-map-and-mapasync) –
「Flow.mapAsync」を'Future [DBResponse]'ではなく 'DBResponse'を返す関数ですか? [Akka API doc](http://doc.akka.io/api/akka/2.4/index.html#[email protected]%5BT%5D(parallelism:Int)(f:Out => scala.concurrent.Future%5BT%5D):FlowOps.this.Repr%5BT%5D)これは不可能です。 –