Example usage for com.mongodb ReadPreference secondaryPreferred

List of usage examples for com.mongodb ReadPreference secondaryPreferred

Introduction

In this page you can find the example usage for com.mongodb ReadPreference secondaryPreferred.

Prototype

public static ReadPreference secondaryPreferred() 

Source Link

Document

Gets a read preference that forces reads to a secondary if one is available, otherwise to the primary.

Usage

From source file:brooklyn.entity.nosql.mongodb.MongoDBTestHelper.java

License:Apache License

/** @return The {@link DBObject} representing the object with the given id */
public static DBObject getById(AbstractMongoDBServer entity, String id) {
    LOG.info("Getting {} from {}", new Object[] { id, entity });
    MongoClient mongoClient = clientForServer(entity);
    // Secondary preferred means the driver will let us read from secondaries too.
    mongoClient.setReadPreference(ReadPreference.secondaryPreferred());
    try {//from  w ww  .j  a  v  a  2  s . c  om
        DB db = mongoClient.getDB(TEST_DB);
        DBCollection testCollection = db.getCollection(TEST_COLLECTION);
        return testCollection.findOne(new BasicDBObject("_id", new ObjectId(id)));
    } finally {
        mongoClient.close();
    }
}

From source file:cloud.simple.RuleEngineApplication.java

@Bean
public MongoDatabase dataSource() {
    String servers = env.getProperty("spring.data.mongodb.custom.service");
    String databaseName = env.getProperty("spring.data.mongodb.database");

    List<ServerAddress> seeds = new ArrayList<ServerAddress>();
    String[] servers1 = servers.split(",");
    for (String server : servers1) {
        String[] server1 = server.split(":");
        seeds.add(new ServerAddress(server1[0], Integer.parseInt(server1[1])));
    }// w ww.j av a2s  .  c o m

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

    @SuppressWarnings("resource")
    MongoClient mongoClient = new MongoClient(seeds, options);
    return mongoClient.getDatabase(databaseName);
}

From source file:com.bacic5i5j.framework.database.MongoContext.java

License:Open Source License

public void init(String db, String username, String password, List servers) {
    this.dbname = db;

    MongoCredential mc = MongoCredential.createMongoCRCredential(username, dbname, password.toCharArray());
    List mcs = new ArrayList();
    mcs.add(mc);//from  ww w  .  j  a  v a  2 s  .  c  o  m

    MongoClientOptions options = MongoClientOptions.builder().connectionsPerHost(100).connectTimeout(10 * 1000)
            .readPreference(ReadPreference.secondaryPreferred()).build();

    this.mongoClient = new MongoClient(servers, mcs, options);
    this.threadLocal = new ThreadLocal<DB>();
}

From source file:com.bluedragon.mongo.MongoDSN.java

License:Open Source License

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()));
    }/*from  w ww .j a  v  a  2 s.c o m*/

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

}

From source file:com.dawsonsystems.session.MongoManager.java

License:Apache License

private void initDbConnection(String path) throws LifecycleException {
    try {/*w  ww  . ja  v  a 2 s  .c  o m*/
        String[] hosts = getHost().split(",");

        List<ServerAddress> addrs = new ArrayList<>();

        for (String host : hosts) {
            addrs.add(new ServerAddress(host, getPort()));
        }

        mongo = new MongoClient(addrs,
                MongoClientOptions.builder().description("TomcatMongoSession[path=" + path + "]")
                        .alwaysUseMBeans(true).connectionsPerHost(connectionsPerHost).build());

        db = mongo.getDatabase(getDatabase());
        if (slaveOk) {
            db.withReadPreference(ReadPreference.secondaryPreferred());
        }
        db.withWriteConcern(WriteConcern.ACKNOWLEDGED);
        getCollection().createIndex(new BasicDBObject("lastmodified", 1));
        log.info("Connected to Mongo " + host + "/" + database + " for session storage, slaveOk=" + slaveOk
                + ", " + (getMaxInactiveInterval() * 1000) + " session live time");
    } catch (RuntimeException e) {
        e.printStackTrace();
        throw new LifecycleException("Error Connecting to Mongo", e);
    }
}

From source file:com.edgytech.umongo.ConnectDialog.java

License:Apache License

MongoClientOptions getMongoClientOptions() {
    MongoClientOptions.Builder builder = MongoClientOptions.builder();
    //        moptions.connectionsPerHost = getIntFieldValue(Item.connectionsPerHost);
    //        moptions.threadsAllowedToBlockForConnectionMultiplier = getIntFieldValue(Item.blockingThreadMultiplier);
    //        moptions.maxWaitTime = getIntFieldValue(Item.maxWaitTime);
    builder.connectTimeout(getIntFieldValue(Item.connectTimeout));
    builder.socketTimeout(getIntFieldValue(Item.socketTimeout));
    //        moptions.autoConnectRetry = getBooleanFieldValue(Item.autoConnectRetry);
    if (!getBooleanFieldValue(Item.safeWrites)) {
        builder.writeConcern(WriteConcern.NONE);
    }/* w w w. j ava2s. c o m*/

    //        moptions.slaveOk = getBooleanFieldValue(Item.secondaryReads);
    if (getBooleanFieldValue(Item.secondaryReads)) {
        builder.readPreference(ReadPreference.secondaryPreferred());
    }

    int stype = getIntFieldValue(Item.socketType);
    int proxy = getIntFieldValue(Item.proxyType);
    if (proxy == 1) {
        // SOCKS proxy
        final String host = getStringFieldValue(Item.proxyHost);
        final int port = getIntFieldValue(Item.proxyPort);
        builder.socketFactory(new SocketFactory() {

            @Override
            public Socket createSocket() throws IOException {
                SocketAddress addr = new InetSocketAddress(host, port);
                Proxy proxy = new Proxy(Proxy.Type.SOCKS, addr);
                Socket socket = new Socket(proxy);
                return socket;
            }

            @Override
            public Socket createSocket(String string, int i) throws IOException, UnknownHostException {
                SocketAddress addr = new InetSocketAddress(host, port);
                Proxy proxy = new Proxy(Proxy.Type.SOCKS, addr);
                Socket socket = new Socket(proxy);
                InetSocketAddress dest = new InetSocketAddress(string, i);
                socket.connect(dest);
                return socket;
            }

            @Override
            public Socket createSocket(String string, int i, InetAddress ia, int i1)
                    throws IOException, UnknownHostException {
                throw new UnsupportedOperationException("Not supported yet.");
            }

            @Override
            public Socket createSocket(InetAddress ia, int i) throws IOException {
                SocketAddress addr = new InetSocketAddress(host, port);
                Proxy proxy = new Proxy(Proxy.Type.SOCKS, addr);
                Socket socket = new Socket(proxy);
                InetSocketAddress dest = new InetSocketAddress(ia, i);
                socket.connect(dest);
                return socket;
            }

            @Override
            public Socket createSocket(InetAddress ia, int i, InetAddress ia1, int i1) throws IOException {
                throw new UnsupportedOperationException("Not supported yet.");
            }
        });

        //            // authentication.. only supports 1 global for all proxies :(
        //            final String user = getStringFieldValue(Item.proxyUser);
        //            final String pwd = getStringFieldValue(Item.proxyPassword);
        //            if (!user.isEmpty()) {
        //                Authenticator.setDefault(new Authenticator() {
        //                    @Override
        //                    protected PasswordAuthentication getPasswordAuthentication() {
        //                        PasswordAuthentication p = new PasswordAuthentication(user, pwd.toCharArray());
        //                        return p;
        //                    }
        //                });
        //            }
    }

    if (stype == 1) {
        builder.socketFactory(SSLSocketFactory.getDefault());
    } else if (stype == 2) {
        // Create a trust manager that does not validate certificate chains
        TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {

            public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                return null;
            }

            public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType) {
            }

            public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType) {
            }
        } };
        try {
            SSLContext sc = SSLContext.getInstance("SSL");
            sc.init(null, trustAllCerts, new java.security.SecureRandom());
            builder.socketFactory(sc.getSocketFactory());
        } catch (Exception e) {
        }
    }

    return builder.build();
}

From source file:com.ikanow.infinit.e.api.knowledge.QueryHandler.java

License:Open Source License

private DBCursor getDocIds(DBCollection docDb, ObjectId[] ids, int nFromServerLimit,
        AdvancedQueryPojo.QueryOutputPojo output, AdvancedQueryPojo.QueryScorePojo score) {
    DBCursor docdCursor = null;/*from www . j  av  a  2  s . c o  m*/
    try {

        BasicDBObject query = new BasicDBObject();
        query.put("_id", new BasicDBObject("$in", ids));
        BasicDBObject fields = new BasicDBObject(DocumentPojo.fullText_, 0); // (used to discard community ids -plus legacy versions-, now need it)
        if (!output.docs.metadata) {
            fields.put(DocumentPojo.metadata_, 0);
        }
        boolean bNotAggEnts = ((output.aggregation == null) || (output.aggregation.entsNumReturn == null)
                || (output.aggregation.entsNumReturn == 0));
        if (bNotAggEnts && (null != score) && (null != score.sigWeight) && (score.sigWeight > 0.0)) {
            bNotAggEnts = false; // (special case, use agg entities to score docs)
        }
        if (!output.docs.ents && bNotAggEnts) {
            fields.put(DocumentPojo.entities_, 0);
        }
        boolean bNotAggEvents = ((output.aggregation == null) || (output.aggregation.eventsNumReturn == null)
                || (output.aggregation.eventsNumReturn == 0));
        boolean bNotAggFacts = ((output.aggregation == null) || (output.aggregation.factsNumReturn == null)
                || (output.aggregation.factsNumReturn == 0));
        boolean bNoStandaloneEvents = (null == output.docs.eventsTimeline)
                || (null == output.docs.numEventsTimelineReturn) || (output.docs.numEventsTimelineReturn == 0);
        if (!output.docs.events && !output.docs.facts && !output.docs.summaries && bNoStandaloneEvents
                && bNotAggEvents && bNotAggFacts) {
            fields.put(DocumentPojo.associations_, 0);
        }
        //TESTED

        //cm = new CollectionManager();
        boolean bPrimary = true;

        if (_replicaSetDistributionRatio > 0) {
            if (0 != (new Date().getTime() % _replicaSetDistributionRatio)) {
                bPrimary = false;
            }
        }
        if (bPrimary) { // Get from the primary
            docdCursor = docDb.find(query, fields).batchSize(nFromServerLimit);
        } else { // Try and get from the secondary if possible
            docdCursor = docDb.find(query, fields).batchSize(nFromServerLimit)
                    .setReadPreference(ReadPreference.secondaryPreferred());
        }

    } catch (Exception e) {
        // If an exception occurs log the error
        _logger.error("Address Exception Message: " + e.getMessage(), e);
    }
    return docdCursor;
}

From source file:com.ikanow.infinit.e.data_model.store.MongoDbConnection.java

License:Apache License

/**
 * Class Constructor used to establish the mongo object
 * //from w  w  w .  j a  v a2s  .c  om
 * @param  server   the server location ( example localhost )
 * @param  port      the port number ( example 27017
 * @throws MongoException 
 * @throws UnknownHostException 
 */
public MongoDbConnection(PropertiesManager properties) throws UnknownHostException, MongoException {
    if (null != properties) {
        this.server = properties.getDatabaseServer();
        this.port = properties.getDatabasePort();
    }
    mongo = new Mongo(this.server, this.port);

    if (null != properties) {
        if (properties.getDistributeAllDbReadsAcrossSlaves()) {
            mongo.setReadPreference(ReadPreference.secondaryPreferred());
        }
    }
}

From source file:com.ikanow.infinit.e.harvest.extraction.document.DuplicateManager_Integrated.java

License:Open Source License

private LinkedList<String> getCandidateDuplicates(BasicDBObject query, String parentSourceKey,
        boolean bUpdate) {
    _modifiedTimeOfActualDuplicate = null;
    _duplicateId = null;//from  w w  w  .  j  a  v  a  2 s  .  c om
    LinkedList<String> returnVal = new LinkedList<String>();

    DBCollection collection = DbManager.getDocument().getMetadata();
    BasicDBObject fields = new BasicDBObject(DocumentPojo.sourceKey_, 1);
    if (bUpdate) {
        fields.put(DocumentPojo.modified_, 1);
        fields.put(DocumentPojo.updateId_, 1);
    } //TESTED

    boolean bPrimary = true;
    if (_replicaSetDistributionRatio > 0) {
        // (distribute based on source key, should ensure some reasonable cache grouping...)
        if (0 != (parentSourceKey.hashCode() % _replicaSetDistributionRatio)) {
            bPrimary = false;
        }
    }
    DBCursor dbc = null;
    if (bPrimary) {
        dbc = collection.find(query, fields);
    } else {
        dbc = collection.find(query, fields).setReadPreference(ReadPreference.secondaryPreferred());
    }
    while (dbc.hasNext()) {
        DBObject dbo = dbc.next();
        String sourceKey = DocumentPojo.getSourceKey((String) dbo.get(DocumentPojo.sourceKey_));
        if (null != sourceKey) {

            // Check for exact duplicates, in which case can bypass horrible functional duplicate logic:
            boolean bFoundExactDuplicate = sourceKey.equals(parentSourceKey);
            // Update logic:
            if (bUpdate && bFoundExactDuplicate) {
                _modifiedTimeOfActualDuplicate = (Date) dbo.get(DocumentPojo.modified_);
                _duplicateId = (ObjectId) dbo.get(DocumentPojo.updateId_);
                if (null == _duplicateId) { // first time, use the _id
                    _duplicateId = (ObjectId) dbo.get(DocumentPojo._id_);
                }
            } //TESTED

            if (bFoundExactDuplicate) { // Found exact duplicate, so return just that for performance
                returnVal.clear();
            }
            returnVal.add(sourceKey);

            if (bFoundExactDuplicate) { // Found exact duplicate, we're done here
                return returnVal;
            }
        } //(if doc has source key, else is malformed, ignore)         
    } //(end loop over URL-duplicates)
    return returnVal;
}

From source file:com.navercorp.pinpoint.plugin.mongodb.MongoDBIT_3_0_x_IT.java

License:Apache License

@Override
public void setClient() {
    mongoClient = new com.mongodb.MongoClient("localhost", 27018);

    database = mongoClient.getDatabase("myMongoDbFake").withReadPreference(ReadPreference.secondaryPreferred())
            .withWriteConcern(WriteConcern.MAJORITY);
}