2012-03-18 45 views
0

読み取りと書き込みに異なるsocketTimeoutを設定したいとします。書き込みが遅くても読み込みが非常に速いはずですが、それ以外の場合は失敗するようにしてください。 - 読み取り用と書き込み操作のための1mongodbの読み取りと書き込みの接続のタイムアウト

MongoOptions mongoOptions = new MongoOptions(); 
mongoOptions.connectionsPerHost = 20; 
mongoOptions.threadsAllowedToBlockForConnectionMultiplier = 100; 
mongoOptions.maxWaitTime = 1000; 
mongoOptions.connectTimeout = 3000; 
mongoOptions.socketTimeout = 3000; 
mongo = new Mongo(parseServerAddresses("localhost:27017"), mongoOptions); 

しかし、このケースでは私は2つのmongoオブジェクトを作成する必要があります。 私は、私は以下のように、この内部MongoOptionsを設定することができます知っています。

私は、クエリのレベルで、またはコレクションレベルでこの設定を見つけることが、読み取りと書き込みの定義を分割しませんでした。事前に

おかげ

+0

あなたはそうです。これを行うには、Mongoの2つの異なるインスタンスが必要です。 optionsパラメータでソケットタイムアウトを渡す方法はありません。 – Barrie

答えて

-1

は、私はちょうど、クエリレベルでこの設定を見つけることができませんでした。特定のクエリのためにこれを設定するという点で

、Javaドライバがfind()方法hereに次のシグネチャがありますoptions設定では、このようなソケットとしてクエリオプションを設定できるようにする必要があることを

find(DBObject query, DBObject fields, int numToSkip, int batchSize, int options) 

を特定のクエリのタイムアウト非推奨と

上記の方法が記されていますが、options on a specific cursorを設定することができます。

私は読み込みと書き込みのための異なるsocketTimeoutを設定したいです。書き込みが遅くても読み込みが非常に速いはずですが、それ以外の場合は失敗するようにしてください。

読書は、いくつかのソケットに読み込み被ることに注意してください。文書はサーバーからバッチで返されます。最初の100回の結果は本当に速くなるかもしれませんが、次の100回の結果でタイムアウトすることがあります。

クエリが戻ってくる書類の多くが含まれている場合、あなたはこのことを認識する必要があります。

+0

私はそのようなオプションを見ましたが、それらの定数は何ですか?たとえばslaveOkを使用する場合は、db.getCollection( "someColl")。addOption(Bytes.QUERYOPTION_SLAVEOK)を使用しています。クエリの定数が見つかりませんでした。いくつかのオプションを更新するにはどうすればよいですか? – Julias

+0

このようなクエリの例として、establishConnectionTimeoutとsocketTimeoutを設定してください – Julias

関連する問題