Mongodb чтение против записи тайм-аут соединения - PullRequest
0 голосов
/ 18 марта 2012

Я хочу настроить другое socketTimeout для чтения и записи.Ничего страшного, если запись будет медленной, но чтение должно быть очень быстрым, иначе я хочу, чтобы запись не удалась.Я знаю, что могу настроить это внутри MongoOptions следующим образом:

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);

Но в этом случае мне нужно создать два объекта монго - один для чтения и один для операций записи.

Я только что сделалне найти эту конфигурацию на уровне запроса, или на уровне коллекции, но разделить определения для чтения и записи.

Заранее спасибо

1 Ответ

0 голосов
/ 18 марта 2012

Я просто не нашел эту конфигурацию на уровне запросов.

С точки зрения установки этого для конкретного запроса, драйвер Java имеет следующую подпись для find() метода здесь :

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

Эта настройка options должна позволять вам устанавливать параметры запроса, такие как время ожидания сокета для конкретного запроса.

Приведенный выше метод помечен как устаревший, но вы также можете установить параметры для конкретного курсора .

Я хочу настроить другое socketTimeout для чтения и записи. Ничего страшного, если запись будет медленной, но чтение должно быть очень быстрым, иначе я хочу, чтобы запись не удалась.

Обратите внимание, что чтение может привести к нескольким чтениям в сокете. Документы возвращаются с сервера партиями. Таким образом, вы можете получить свои первые 100 результатов очень быстро, но затем вы можете использовать следующие 100 результатов.

Если ваши запросы связаны с большим количеством возвращаемых документов, вы должны знать об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...