Java 类com.mongodb.ReadPreference 实例源码

项目:adeptj-modules    文件:Utils.java   
/**
 * Prepares {@link ReadPreference} from given {@link ReadPreferenceEnum}
 *
 * @param readPreferenceEnum    Read preference enum value provided in config
 * @return  Read preference for mongo client options
 */
public static ReadPreference readPreference(ReadPreferenceEnum readPreferenceEnum) {
    switch (readPreferenceEnum) {
        case NEAREST:
            return ReadPreference.nearest();

        case PRIMARY:
            return ReadPreference.primary();

        case SECONDARY:
            return ReadPreference.secondary();

        case PRIMARY_PREFERRED:
            return ReadPreference.primaryPreferred();

        case SECONDARY_PREFERRED:
            return ReadPreference.secondaryPreferred();

        default:
            return null;
    }
}
项目:mongolastic    文件:MongoConfiguration.java   
private void prepareClient() {
    try {
        ServerAddress address = new ServerAddress(config.getMongo().getHost(), config.getMongo().getPort());
        MongoClientOptions options = MongoClientOptions.builder()
                .serverSelectionTimeout(5000)
                .socketKeepAlive(false)
                .readPreference(ReadPreference.primaryPreferred())
                .sslInvalidHostNameAllowed(true)
                .build();

         client = connectToClient(address, options);
    } catch (Exception ex) {
        logger.error(ex.getMessage(), ex);
        System.exit(-1);
    }
}
项目:edison-microservice    文件:MongoProperties.java   
public MongoClientOptions toMongoClientOptions(final CodecRegistry codecRegistry) {
    return builder()
            .sslEnabled(sslEnabled)
            .codecRegistry(codecRegistry)
            .readPreference(ReadPreference.valueOf(readPreference))
            .connectTimeout(connectTimeout)
            .serverSelectionTimeout(serverSelectionTimeout)
            .cursorFinalizerEnabled(true)
            .maxWaitTime(maxWaitTime)
            .maxConnectionLifeTime(connectionpool.getMaxLifeTime())
            .threadsAllowedToBlockForConnectionMultiplier(connectionpool.getBlockedConnectionMultiplier())
            .maxConnectionIdleTime(connectionpool.getMaxIdleTime())
            .minConnectionsPerHost(connectionpool.getMinSize())
            .connectionsPerHost(connectionpool.getMaxSize())
            .build();
}
项目:datacollector    文件:MongoDBConfig.java   
public void init(
    Stage.Context context,
    List<Stage.ConfigIssue> issues,
    ReadPreference readPreference,
    WriteConcern writeConcern
) {
  mongoClient = createClient(context, issues, readPreference, writeConcern);
  if (!issues.isEmpty()) {
    return;
  }

  mongoDatabase = createMongoDatabase(context, issues, readPreference, writeConcern);
  if (!issues.isEmpty()) {
    return;
  }

  mongoCollection = createMongoCollection(context, issues, readPreference, writeConcern);
}
项目:datacollector    文件:MongoDBConfig.java   
private MongoDatabase createMongoDatabase(
    Stage.Context context,
    List<Stage.ConfigIssue> issues,
    ReadPreference readPreference,
    WriteConcern writeConcern
) {
  MongoDatabase mongoDatabase = null;
  try {
    if (readPreference != null) {
      mongoDatabase = mongoClient.getDatabase(database).withReadPreference(readPreference);
    } else if (writeConcern != null) {
      mongoDatabase = mongoClient.getDatabase(database).withWriteConcern(writeConcern);
    }
  } catch (MongoClientException e) {
    issues.add(context.createConfigIssue(
        Groups.MONGODB.name(),
        MONGO_CONFIG_PREFIX + "database",
        Errors.MONGODB_02,
        database,
        e.toString()
    ));
  }
  return mongoDatabase;
}
项目:datacollector    文件:MongoDBConfig.java   
private MongoCollection createMongoCollection(
    Stage.Context context,
    List<Stage.ConfigIssue> issues,
    ReadPreference readPreference,
    WriteConcern writeConcern
) {
  MongoCollection mongoCollection = null;
  try {
    if (readPreference != null) {
      mongoCollection = mongoDatabase.getCollection(collection).withReadPreference(readPreference);
    } else if (writeConcern != null) {
      mongoCollection = mongoDatabase.getCollection(collection).withWriteConcern(writeConcern);
    }
  } catch (MongoClientException e) {
    issues.add(context.createConfigIssue(
        Groups.MONGODB.name(),
        MONGO_CONFIG_PREFIX + "collection",
        Errors.MONGODB_03,
        collection,
        e.toString()
    ));
  }
  return mongoCollection;
}
项目:mandrel    文件:MongoUtils.java   
public static void checkCapped(MongoDatabase database, String collectionName, int size, int maxDocuments, boolean delete) {
    if (Lists.newArrayList(database.listCollectionNames()).contains(collectionName)) {
        log.debug("'{}' collection already exists...", collectionName);

        // Check if already capped
        Document command = new Document("collStats", collectionName);
        boolean isCapped = database.runCommand(command, ReadPreference.primary()).getBoolean("capped").booleanValue();

        if (!isCapped) {
            if (delete) {
                database.getCollection(collectionName).drop();
                database.createCollection(collectionName, new CreateCollectionOptions().capped(true).maxDocuments(maxDocuments).sizeInBytes(size));
            } else {
                log.info("'{}' is not capped, converting it...", collectionName);
                command = new Document("convertToCapped", collectionName).append("size", size).append("max", maxDocuments);
                database.runCommand(command, ReadPreference.primary());
            }
        } else {
            log.debug("'{}' collection already capped!", collectionName);
        }

    } else {
        database.createCollection(collectionName, new CreateCollectionOptions().capped(true).maxDocuments(maxDocuments).sizeInBytes(size));
    }
}
项目:jackrabbit-dynamodb-store    文件:MongoBlobStore.java   
private MongoBlob getBlob(String id, long lastMod) {
    DBObject query = getBlobQuery(id, lastMod);

    // try the secondary first
    // TODO add a configuration option for whether to try reading from secondary
    ReadPreference pref = ReadPreference.secondaryPreferred();
    DBObject fields = new BasicDBObject();
    fields.put(MongoBlob.KEY_DATA, 1);
    MongoBlob blob = (MongoBlob) getBlobCollection().findOne(query, fields, pref);
    if (blob == null) {
        // not found in the secondary: try the primary
        pref = ReadPreference.primary();
        blob = (MongoBlob) getBlobCollection().findOne(query, fields, pref);
    }
    return blob;
}
项目:jackrabbit-dynamodb-store    文件:MongoMissingLastRevSeeker.java   
@Override
public CloseableIterable<NodeDocument> getCandidates(final long startTime) {
    DBObject query =
            start(NodeDocument.MODIFIED_IN_SECS).greaterThanEquals(
                            NodeDocument.getModifiedInSecs(startTime))
                    .get();
    DBObject sortFields = new BasicDBObject(NodeDocument.MODIFIED_IN_SECS, -1);

    DBCursor cursor =
            getNodeCollection().find(query)
                    .sort(sortFields)
                    .setReadPreference(ReadPreference.primary());
    return CloseableIterable.wrap(transform(cursor, new Function<DBObject, NodeDocument>() {
        @Override
        public NodeDocument apply(DBObject input) {
            return store.convertFromDBObject(Collection.NODES, input);
        }
    }), cursor);
}
项目:jackrabbit-dynamodb-store    文件:MemoryDocumentStore.java   
@Override
public void setReadWriteMode(String readWriteMode) {
    if (readWriteMode == null || readWriteMode.equals(lastReadWriteMode)) {
        return;
    }
    lastReadWriteMode = readWriteMode;
    try {
        Map<String, String> map = Splitter.on(", ").withKeyValueSeparator(":").split(readWriteMode);
        String read = map.get("read");
        if (read != null) {
            ReadPreference readPref = ReadPreference.valueOf(read);
            if (!readPref.equals(this.readPreference)) {
                this.readPreference = readPref;
            }
        }
        String write = map.get("write");
        if (write != null) {
            WriteConcern writeConcern = WriteConcern.valueOf(write);
            if (!writeConcern.equals(this.writeConcern)) {
                this.writeConcern = writeConcern;
            }
        }
    } catch (Exception e) {
        // unsupported or parse error - ignore
    }
}
项目:jackrabbit-dynamodb-store    文件:ReadPreferenceIT.java   
@Test
public void testMongoReadPreferencesDefault() throws Exception{
    assertEquals(ReadPreference.primary(),
            mongoDS.getMongoReadPreference(NODES,"foo", DocumentReadPreference.PRIMARY));

    assertEquals(ReadPreference.primaryPreferred(),
            mongoDS.getMongoReadPreference(NODES,"foo", DocumentReadPreference.PREFER_PRIMARY));

    //By default Mongo read preference is primary
    assertEquals(ReadPreference.primary(),
            mongoDS.getMongoReadPreference(NODES,"foo", DocumentReadPreference.PREFER_SECONDARY));

    //Change the default and assert again
    mongoDS.getDBCollection(NODES).getDB().setReadPreference(ReadPreference.secondary());
    assertEquals(ReadPreference.secondary(),
            mongoDS.getMongoReadPreference(NODES,"foo", DocumentReadPreference.PREFER_SECONDARY));

    //for case where parent age cannot be determined the preference should be primaryPreferred
    assertEquals(ReadPreference.primaryPreferred(),
            mongoDS.getMongoReadPreference(NODES,"foo", DocumentReadPreference.PREFER_SECONDARY_IF_OLD_ENOUGH));

    //For collection other than NODES always primary
    assertEquals(ReadPreference.primary(),
            mongoDS.getMongoReadPreference(SETTINGS,"foo", DocumentReadPreference.PREFER_SECONDARY_IF_OLD_ENOUGH));

}
项目:jackrabbit-dynamodb-store    文件:ReadPreferenceIT.java   
@Test
public void testMongoReadPreferencesWithAge() throws Exception{
    //Change the default
    ReadPreference testPref = ReadPreference.secondary();
    mongoDS.getDBCollection(NODES).getDB().setReadPreference(testPref);

    NodeBuilder b1 = nodeStore.getRoot().builder();
    b1.child("x").child("y");
    nodeStore.merge(b1, EmptyHook.INSTANCE, CommitInfo.EMPTY);

    String id = Utils.getIdFromPath("/x/y");
    String parentId = Utils.getParentId(id);
    mongoDS.invalidateCache(NODES,id);

    //For modifiedTime < replicationLag primary should be preferred
    assertEquals(ReadPreference.primaryPreferred(),
            mongoDS.getMongoReadPreference(NODES,parentId, DocumentReadPreference.PREFER_SECONDARY_IF_OLD_ENOUGH));

    //Going into future to make parent /x old enough
    clock.waitUntil(Revision.getCurrentTimestamp() + replicationLag);
    mongoDS.setClock(clock);

    //For old modified nodes secondaries should be preferred
    assertEquals(testPref,
            mongoDS.getMongoReadPreference(NODES, parentId, DocumentReadPreference.PREFER_SECONDARY_IF_OLD_ENOUGH));
}
项目:lightblue-mongo    文件:MongoLocking.java   
public int getLockCount(String callerId, String resourceId) {
    Date now = new Date();
    BasicDBObject q = new BasicDBObject().
            append(CALLERID, callerId).
            append(RESOURCEID, resourceId).
            append(EXPIRATION, new BasicDBObject("$gt", now)).
            append(COUNT, new BasicDBObject("$gt", 0));
    BasicDBObject field = new BasicDBObject(COUNT, 1);
    DBObject lock = coll.findOne(q, field,ReadPreference.primary());
    if (lock != null) {
        int cnt = ((Number) lock.get(COUNT)).intValue();
        LOGGER.debug("{}/{} lockCount={}", callerId, resourceId, cnt);
        return cnt;
    } else {
        throw new InvalidLockException(resourceId);
    }
}
项目:lightblue-mongo    文件:MongoLocking.java   
public void ping(String callerId, String resourceId) {
    Date now = new Date();
    BasicDBObject q = new BasicDBObject().
            append(CALLERID, callerId).
            append(RESOURCEID, resourceId).
            append(EXPIRATION, new BasicDBObject("$gt", now)).
            append(COUNT, new BasicDBObject("$gt", 0));
    DBObject lock = coll.findOne(q,null,ReadPreference.primary());
    if (lock != null) {
        Date expiration = new Date(now.getTime() + ((Number) lock.get(TTL)).longValue());
        int ver = ((Number) lock.get(VERSION)).intValue();
        BasicDBObject update = new BasicDBObject().
                append("$set", new BasicDBObject(TIMESTAMP, now).
                        append(EXPIRATION, expiration)).
                append("$inc", new BasicDBObject(VERSION, 1));
        q = q.append(VERSION, ver);
        WriteResult wr = coll.update(q, update, false, false, WriteConcern.ACKNOWLEDGED);
        if (wr.getN() != 1) {
            throw new InvalidLockException(resourceId);
        }
        LOGGER.debug("{}/{} pinged", callerId, resourceId);
    } else {
        throw new InvalidLockException(resourceId);
    }
}
项目:lightblue-mongo    文件:BatchUpdate.java   
/**
 * Returns the set of document ids that were not updated with docver
 *
 * @param docver The current document version
 * @param documentIds The document ids to scan
 *
 * @return The set of document ids that were not updated with docver
 */
public static Set<Object> getFailedUpdates(DBCollection collection,
                                           ObjectId docver,
                                           List<Object> documentIds) {
    Set<Object> failedIds=new HashSet<>();
    if(!documentIds.isEmpty()) {
        // documents with the given _ids and whose docver contains our docVer are the ones we managed to update
        // others are failures
        BasicDBObject query=new BasicDBObject(DOCVER_FLD,new BasicDBObject("$ne",docver));
        query.append("_id",new BasicDBObject("$in",documentIds));
        try (DBCursor cursor = collection.find(query,new BasicDBObject("_id",1))
             .setReadPreference(ReadPreference.primary())) {
            while(cursor.hasNext()) {
                failedIds.add(cursor.next().get("_id"));
            }
        }
    }
    return failedIds;
}
项目:lightblue-mongo    文件:MongoConfigurationParseTest.java   
@Test
public void readPreference() throws IOException {
    try (InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("parse-test-datasources.json")) {
        JsonNode node = JsonUtils.json(is);

        MongoConfiguration metadataConfig = new MongoConfiguration();
        metadataConfig.initializeFromJson(node.get("metadata_readPreference"));

        MongoConfiguration dataConfig = new MongoConfiguration();
        dataConfig.initializeFromJson(node.get("mongodata_readPreference"));

        assertEquals(ReadPreference.nearest(), metadataConfig.getMongoClientOptions().getReadPreference());
        assertEquals(ReadPreference.secondary(), dataConfig.getMongoClientOptions().getReadPreference());
        assertEquals(WriteConcern.SAFE, metadataConfig.getWriteConcern());
    }
}
项目:dropwizard-mongodb    文件:MongoClientFactoryTest.java   
public void correctlyExtractsMongoClientFromConfiguration() throws Exception {
    final Example example = factory.build(testFile);
    final MongoClient client = example.getMongoClient().build(environment);

    assertThat(client.getAddress().getHost()).isIn("localhost", "127.0.0.1");
    assertThat(client.getAddress().getPort()).isEqualTo(ServerAddress.defaultPort());
    assertThat(client.getCredentialsList()).isEmpty();

    final MongoClientOptions options = client.getMongoClientOptions();

    assertThat(options.getDbDecoderFactory()).isEqualTo(DefaultDBDecoder.FACTORY);
    assertThat(options.getDbEncoderFactory()).isEqualTo(DefaultDBEncoder.FACTORY);
    assertThat(options.getReadPreference()).isEqualTo(ReadPreference.primary());
    assertThat(options.getWriteConcern()).isEqualTo(WriteConcern.ACKNOWLEDGED);
    assertThat(options.getSocketFactory()).isEqualTo(SocketFactory.getDefault());
}
项目:birt    文件:MongoDBDriver.java   
public static ReadPreferenceChoice getReadPreferenceChoice( ReadPreference readPref )
{
    if( readPref == null )
        return PRIMARY;     // default
   String readPrefName = readPref.getName();
    if( readPrefName == ReadPreference.primary().getName() )
        return PRIMARY;
    if( readPrefName == ReadPreference.primaryPreferred().getName() )
        return PRIMARY_PREFERRED;
    if( readPrefName == ReadPreference.secondary().getName() )
        return SECONDARY;
    if( readPrefName == ReadPreference.secondaryPreferred().getName() )
        return SECONDARY_PREFERRED;
    if( readPrefName == ReadPreference.nearest().getName() )
        return NEAREST;
    return PRIMARY;     // default
}
项目:mongodb-orm    文件:MongoClientTemplet.java   
@Override
public long count(String statement, Object parameter) {
  logger.debug("Execute 'count' mongodb command. Statement '" + statement + "'.");

  SelectConfig config = (SelectConfig) configuration.getConfig(statement);
  if (config == null) {
    throw new MongoDaoException(statement, "Count statement id '" + statement + "' not found.");
  }

  String collection = config.getCollection();
  NodeEntry query = config.getQuery();

  DB db = factory.getDataSource().getDB();

  DBCollection coll = db.getCollection(collection);

  Map<String, Object> q = (Map<String, Object>) query.executorNode(configuration, parameter);

  DBObject queryDbo = new BasicDBObject(q);
  logger.debug("Execute 'count' mongodb command. Query '" + queryDbo + "'.");

  return coll.count(queryDbo, ReadPreference.secondaryPreferred());
}
项目:mongodb-rdbms-sync    文件:MngOpLogReader.java   
private FindIterable<Document> getCursor(){
    MongoClient client = DBCacheManager.INSTANCE.getCachedMongoPool(mongoDbName, mongoUserName);
    //MongoClient client = DBCacheManager.INSTANCE.getCachedMongoPool(mongoDbName, "ccwOplRO");
    client.setReadPreference(ReadPreference.secondary());
    MongoCollection<Document> collection =client.getDatabase(localDb).getCollection(oplogRs);
    FindIterable<Document> it = collection.find(Filters.and(Filters.eq(NS, ns),Filters.gt(TS, lastReadTime)))
            .cursorType(CursorType.TailableAwait).noCursorTimeout(true).maxAwaitTime(30, TimeUnit.MINUTES);
    return it;
}
项目:jpa-unit    文件:EclipseLinkConfiguration.java   
private void configureClientOptions(final Map<String, Object> properties) {
    final MongoClientOptions.Builder builder = MongoClientOptions.builder();
    final String writeConcern = (String) properties.get(ECLIPSELINK_NOSQL_PROPERTY_MONGO_WRITE_CONCERN);
    final String readPreference = (String) properties.get(ECLIPSELINK_NOSQL_PROPERTY_MONGO_READ_PREFERENCE);

    if (writeConcern != null) {
        builder.writeConcern(WriteConcern.valueOf(writeConcern));
    }
    if (readPreference != null) {
        builder.readPreference(ReadPreference.valueOf(readPreference));
    }

    mongoClientOptions = builder.build();
}
项目:jpa-unit    文件:HibernateOgmConfiguration.java   
private void configureClientOptions(final Map<String, Object> properties) {
    final MongoClientOptions.Builder builder = MongoClientOptions.builder();
    setOptions(builder, (final String key) -> (String) properties.get(HIBERNATE_OGM_MONGODB_OPTIONS_PREFIX + "." + key));

    final String writeConcern = (String) properties.get(HIBERNATE_OGM_MONGODB_WRITE_CONCERN);
    final String readPreference = (String) properties.get(HIBERNATE_OGM_MONGODB_READ_PREFERENCE);

    if (writeConcern != null) {
        builder.writeConcern(WriteConcern.valueOf(writeConcern));
    }
    if (readPreference != null) {
        builder.readPreference(ReadPreference.valueOf(readPreference));
    }
    mongoClientOptions = builder.build();
}
项目:jpa-unit    文件:EclipseLinkConfigurationTest.java   
@Test
public void testMongoClientOptions() {
    // GIVEN
    final Map<String, Object> properties = new HashMap<>();
    when(descriptor.getProperties()).thenReturn(properties);

    properties.put("eclipselink.nosql.property.mongo.db", "foo");

    // it looks like only the two options below are supported by EclipseLink

    final ReadPreference readPreference = ReadPreference.nearest();
    final WriteConcern writeConcern = WriteConcern.JOURNALED;

    properties.put("eclipselink.nosql.property.mongo.read-preference", readPreference.getName());
    properties.put("eclipselink.nosql.property.mongo.write-concern", "JOURNALED");

    final ConfigurationFactory factory = new ConfigurationFactoryImpl();

    // WHEN
    final Configuration configuration = factory.createConfiguration(descriptor);

    // THEN
    assertThat(configuration, notNullValue());

    final MongoClientOptions clientOptions = configuration.getClientOptions();
    assertThat(clientOptions, notNullValue());
    assertThat(clientOptions.getReadPreference(), equalTo(readPreference));
    assertThat(clientOptions.getWriteConcern(), equalTo(writeConcern));
}
项目:switchman    文件:Persistence.java   
@Bean
public MongoDbFactory mongoDbFactory() throws Exception {
  MongoClientURI uri = new MongoClientURI(mongoDbUrl);
  mongo = new MongoClient(uri);
  mongo.setReadPreference(ReadPreference.primary());
  mongo.setWriteConcern(WriteConcern.ACKNOWLEDGED);
  return new SimpleMongoDbFactory(mongo, uri.getDatabase());
}
项目:mongo-java-driver-rx    文件:MongoDatabaseImpl.java   
@Override
public <TResult> Observable<TResult> runCommand(final Bson command, final ReadPreference readPreference,
                                                   final Class<TResult> clazz) {
    return RxObservables.create(Observables.observe(new Block<SingleResultCallback<TResult>>() {
        @Override
        public void apply(final SingleResultCallback<TResult> callback) {
            wrapped.runCommand(command, readPreference, clazz, callback);
        }
    }), observableAdapter);
}
项目:mongofx    文件:FindIterable.java   
public FindIterable(final MongoNamespace namespace,
    final CodecRegistry codecRegistry,
    final ReadPreference readPreference, final OperationExecutor executor,
    final Bson filter, final FindOptions findOptions) {
  this.namespace = notNull("namespace", namespace);
  this.codecRegistry = notNull("codecRegistry", codecRegistry);
  this.readPreference = notNull("readPreference", readPreference);
  this.executor = notNull("executor", executor);
  this.filter = notNull("filter", filter);
  this.findOptions = notNull("findOptions", findOptions);
}
项目:clotho3crud    文件:RefFindOne.java   
RefFindOne(DBCollection collection, ReadPreference readPreference, ExtendedUnmarshaller unmarshaller, QueryFactory queryFactory, String query, Object... parameters) {
    this.unmarshaller = unmarshaller;
    this.collection = collection;
    this.readPreference = readPreference;
    this.queryFactory = queryFactory;
    this.query = this.queryFactory.createQuery(query, parameters);
}
项目:mongo-java-driver-reactivestreams    文件:MongoDatabaseImpl.java   
@Override
public <TResult> Publisher<TResult> runCommand(final Bson command, final ReadPreference readPreference,
                                               final Class<TResult> clazz) {
    return new ObservableToPublisher<TResult>(observe(new Block<SingleResultCallback<TResult>>() {
        @Override
        public void apply(final SingleResultCallback<TResult> callback) {
            wrapped.runCommand(command, readPreference, clazz, callback);
        }
    }));
}
项目:mongo-java-driver-reactivestreams    文件:MongoDatabaseImpl.java   
@Override
public <TResult> Publisher<TResult> runCommand(final ClientSession clientSession, final Bson command,
                                               final ReadPreference readPreference, final Class<TResult> clazz) {
    return new ObservableToPublisher<TResult>(observe(new Block<SingleResultCallback<TResult>>() {
        @Override
        public void apply(final SingleResultCallback<TResult> callback) {
            wrapped.runCommand(clientSession, command, readPreference, clazz, callback);
        }
    }));
}
项目:mongo-java-driver-reactivestreams    文件:TestOperationExecutor.java   
@Override
public <T> void execute(final AsyncReadOperation<T> operation, final ReadPreference readPreference, final ClientSession session,
                        final SingleResultCallback<T> callback) {
    readPreferences.add(readPreference);
    clientSessions.add(session);
    if (queueExecution) {
        queuedReadOperations.add(operation);
        queuedReadCallbacks.add(callback);
    } else {
        readOperations.add(operation);
        callResult(callback);
    }
}
项目:openbd-core    文件:MongoDSN.java   
public static MongoClient   newClient(String server, String user, String pass, String db) throws UnknownHostException{

    MongoClientOptions options = MongoClientOptions
            .builder()
            .readPreference( ReadPreference.secondaryPreferred() )
            .build();

    List<InetSocketAddress> serverList = AddrUtil.getAddresses(server);
    List<ServerAddress> addrs = new ArrayList<ServerAddress>();

    Iterator<InetSocketAddress> it  = serverList.iterator();
    while ( it.hasNext() ){
        InetSocketAddress   isa = it.next();
        addrs.add( new ServerAddress( isa.getAddress(), isa.getPort() ) );
    }


    if ( user != null ) {
        MongoCredential cred = MongoCredential.createCredential( user, db, pass.toCharArray() );
        List<MongoCredential> creds = new ArrayList<MongoCredential>();
        creds.add( cred );

        return new MongoClient( addrs, creds, options );
    } else {
        return new MongoClient( addrs, options );
    }


}
项目:ithings-demo    文件:MongoConfiguration.java   
@Bean
public MongoDbFactory mongoDbFactory() throws Exception {
    MongoCredential credential = MongoCredential.createMongoCRCredential("user1", "test", "password1".toCharArray());
    MongoClient mongoClient;
    if (propertyResolver.getProperty("mode").equalsIgnoreCase("cluster")){
        List<ServerAddress> servers = mongo.getServerAddressList();    
        mongoClient = new MongoClient(servers, Arrays.asList(credential));
        mongoClient.setReadPreference(ReadPreference.nearest());
        mongoClient.getReplicaSetStatus();

        return new SimpleMongoDbFactory(mongoClient, propertyResolver.getProperty("databaseName"));
    } else {
        return new SimpleMongoDbFactory(mongo, propertyResolver.getProperty("databaseName"));
    }    
}
项目:DotCi    文件:DotCiModule.java   
@Provides
@Singleton
Mongo providesMongo() {
    Mongo mongo = null;

    try {
        final MongoClientOptions mongoClientOptions = MongoClientOptions.builder().autoConnectRetry(true).readPreference(ReadPreference.primaryPreferred()).build();
        mongo = new MongoClient(SetupConfig.get().getMongoServerAddresses(), mongoClientOptions);
    } catch (final UnknownHostException e) {
        addError(e);
    }

    return mongo;
}
项目:mongoFS    文件:JavaConfig.java   
public MongoFileStoreConfig configure() {

        MongoFileStoreConfig config = MongoFileStoreConfig.builder().bucket("spring") //
                .asyncDeletes(true) // background deleting
                .chunkSize(ChunkSize.medium_256K) // good default
                .enableCompression(true)//
                .readPreference(ReadPreference.secondaryPreferred())//
                .writeConcern(WriteConcern.ACKNOWLEDGED)//
                .build();

        return config;
    }
项目:mongoFS    文件:TestHarness.java   
@Test
public void test() throws IOException {

    MongoFileStoreConfig config = MongoFileStoreConfig.builder().bucket("xml")//
            .writeConcern(WriteConcern.SAFE).readPreference(ReadPreference.primary()).build();
    MongoFileStore store = new MongoFileStore(database, config);

    File file = new File("/Users/dbusch/Documents/Gasplant", "GasStatementData_J24_20131101_20131001_4_1.xml");

    MongoFile mongoFile = store.upload(file, "application/xml");
    assertNotNull(mongoFile);

    mongoFile.validate();
}
项目:jackrabbit-dynamodb-store    文件:MongoVersionGCSupport.java   
@Override
public CloseableIterable<NodeDocument> getPossiblyDeletedDocs(final long lastModifiedTime) {
    //_deletedOnce == true && _modified < lastModifiedTime
    DBObject query =
            start(NodeDocument.DELETED_ONCE).is(Boolean.TRUE)
                            .put(NodeDocument.MODIFIED_IN_SECS).lessThan(NodeDocument.getModifiedInSecs(lastModifiedTime))
                    .get();
    DBCursor cursor = getNodeCollection().find(query).setReadPreference(ReadPreference.secondaryPreferred());
    return CloseableIterable.wrap(transform(cursor, new Function<DBObject, NodeDocument>() {
        @Override
        public NodeDocument apply(DBObject input) {
            return store.convertFromDBObject(Collection.NODES, input);
        }
    }), cursor);
}
项目:jackrabbit-dynamodb-store    文件:CacheInvalidator.java   
@Override
public InvalidationResult invalidateCache() {
    final InvalidationResult result = new InvalidationResult();

    int size  = 0;
    List<String> cachedKeys = new ArrayList<String>();
    for (Map.Entry<CacheValue, ? extends CachedNodeDocument> e : documentStore.getCacheEntries()) {
        size++;
        cachedKeys.add(e.getKey().toString());
    }
    result.cacheSize = size;

    QueryBuilder query = QueryBuilder.start(Document.ID)
            .in(cachedKeys);

    // Fetch only the lastRev map and id
    final BasicDBObject keys = new BasicDBObject(Document.ID, 1);
    keys.put(Document.MOD_COUNT, 1);

    // Fetch lastRev for each such node
    DBCursor cursor = nodes.find(query.get(), keys);
    cursor.setReadPreference(ReadPreference.primary());
    result.queryCount++;

    for (DBObject obj : cursor) {
        result.cacheEntriesProcessedCount++;
        String id = (String) obj.get(Document.ID);
        Number modCount = (Number) obj.get(Document.MOD_COUNT);

        CachedNodeDocument cachedDoc = documentStore.getCachedNodeDoc(id);
        if (cachedDoc != null
                && !Objects.equal(cachedDoc.getModCount(), modCount)) {
            documentStore.invalidateCache(Collection.NODES, id);
            result.invalidationCount++;
        } else {
            result.upToDateCount++;
        }
    }
    return result;
}
项目:jackrabbit-dynamodb-store    文件:MongoDocumentStore.java   
@CheckForNull
private <T extends Document> T findUncached(Collection<T> collection, String key, DocumentReadPreference docReadPref) {
    log("findUncached", key, docReadPref);
    DBCollection dbCollection = getDBCollection(collection);
    long start = start();
    try {
        ReadPreference readPreference = getMongoReadPreference(collection, Utils.getParentId(key), docReadPref);

        if(readPreference.isSlaveOk()){
            LOG.trace("Routing call to secondary for fetching [{}]", key);
        }

        DBObject obj = dbCollection.findOne(getByKeyQuery(key).get(), null, null, readPreference);

        if (obj == null
                && readPreference.isSlaveOk()) {
            //In case secondary read preference is used and node is not found
            //then check with primary again as it might happen that node document has not been
            //replicated. This is required for case like SplitDocument where the SplitDoc is fetched with
            //maxCacheAge == Integer.MAX_VALUE which results in readPreference of secondary.
            //In such a case we know that document with such an id must exist
            //but possibly dut to replication lag it has not reached to secondary. So in that case read again
            //from primary
            obj = dbCollection.findOne(getByKeyQuery(key).get(), null, null, ReadPreference.primary());
        }
        if(obj == null){
            return null;
        }
        T doc = convertFromDBObject(collection, obj);
        if (doc != null) {
            doc.seal();
        }
        return doc;
    } finally {
        end("findUncached", start);
    }
}
项目:jackrabbit-dynamodb-store    文件:MongoDocumentStore.java   
<T extends Document> ReadPreference getMongoReadPreference(Collection<T> collection,
                                                           String parentId,
                                                           DocumentReadPreference preference) {
    switch(preference){
        case PRIMARY:
            return ReadPreference.primary();
        case PREFER_PRIMARY :
            return ReadPreference.primaryPreferred();
        case PREFER_SECONDARY :
            return getConfiguredReadPreference(collection);
        case PREFER_SECONDARY_IF_OLD_ENOUGH:
            if(collection != Collection.NODES){
                return ReadPreference.primary();
            }

            //Default to primary preferred such that in case primary is being elected
            //we can still read from secondary
            //TODO REVIEW Would that be safe
            ReadPreference readPreference = ReadPreference.primaryPreferred();
            if (parentId != null) {
                long replicationSafeLimit = getTime() - maxReplicationLagMillis;
                NodeDocument cachedDoc = (NodeDocument) getIfCached(collection, parentId);
                if (cachedDoc != null && !cachedDoc.hasBeenModifiedSince(replicationSafeLimit)) {

                    //If parent has been modified loooong time back then there children
                    //would also have not be modified. In that case we can read from secondary
                    readPreference = getConfiguredReadPreference(collection);
                }
            }
            return readPreference;
        default:
            throw new IllegalArgumentException("Unsupported usage " + preference);
    }
}
项目:jackrabbit-dynamodb-store    文件:MongoDocumentStore.java   
@Override
public void setReadWriteMode(String readWriteMode) {
    if (readWriteMode == null || readWriteMode.equals(lastReadWriteMode)) {
        return;
    }
    lastReadWriteMode = readWriteMode;
    try {
        String rwModeUri = readWriteMode;
        if(!readWriteMode.startsWith("mongodb://")){
            rwModeUri = String.format("mongodb://localhost/?%s", readWriteMode);
        }
        MongoClientURI uri = new MongoClientURI(rwModeUri);
        ReadPreference readPref = uri.getOptions().getReadPreference();

        if (!readPref.equals(nodes.getReadPreference())) {
            nodes.setReadPreference(readPref);
            LOG.info("Using ReadPreference {} ",readPref);
        }

        WriteConcern writeConcern = uri.getOptions().getWriteConcern();
        if (!writeConcern.equals(nodes.getWriteConcern())) {
            nodes.setWriteConcern(writeConcern);
            LOG.info("Using WriteConcern " + writeConcern);
        }
    } catch (Exception e) {
        LOG.error("Error setting readWriteMode " + readWriteMode, e);
    }
}