Пример #1
0
  private MongoClientOptions createMongoClientOptions(ClientConfig config) {
    MongoClientOptions.Builder optionsBuilder = new MongoClientOptions.Builder();

    optionsBuilder.alwaysUseMBeans(config.alwaysUseMBeans());
    optionsBuilder.connectionsPerHost(config.connectionsPerHost());
    optionsBuilder.connectTimeout(config.connectTimeout());
    optionsBuilder.cursorFinalizerEnabled(config.cursorFinalizerEnabled());
    optionsBuilder.description(config.description());
    optionsBuilder.heartbeatConnectTimeout(config.heartbeatConnectTimeout());
    optionsBuilder.heartbeatFrequency(config.heartbeatFrequency());
    optionsBuilder.heartbeatSocketTimeout(config.heartbeatSocketTimeout());
    optionsBuilder.localThreshold(config.localThreshold());
    optionsBuilder.maxConnectionIdleTime(config.maxConnectionIdleTime());
    optionsBuilder.maxConnectionLifeTime(config.maxConnectionLifeTime());
    optionsBuilder.maxWaitTime(config.maxWaitTime());
    optionsBuilder.minConnectionsPerHost(config.minConnectionsPerHost());
    optionsBuilder.minHeartbeatFrequency(config.minHeartbeatFrequency());
    optionsBuilder.serverSelectionTimeout(config.serverSelectionTimeout());
    optionsBuilder.socketKeepAlive(config.socketKeepAlive());
    optionsBuilder.socketTimeout(config.socketTimeout());
    optionsBuilder.sslEnabled(config.sslEnabled());
    optionsBuilder.sslInvalidHostNameAllowed(config.sslInvalidHostNameAllowed());
    optionsBuilder.threadsAllowedToBlockForConnectionMultiplier(
        config.threadsAllowedToBlockForConnectionMultiplier());
    WriteConcern writeConcern =
        new WriteConcern(
            config.writeConcernW(),
            config.writeConcernWtimeout(),
            config.writeConcernFsync(),
            config.writeConcernJ());
    optionsBuilder.writeConcern(writeConcern);

    if (!config.requiredReplicaSetName().isEmpty())
      optionsBuilder.requiredReplicaSetName(config.requiredReplicaSetName());

    List<Tag> tags = new ArrayList<>();

    if (config.readPreferenceTags() != null) {
      for (String tag : config.readPreferenceTags()) {
        String[] elements = tag.split("=");
        tags.add(new Tag(elements[0], elements[1]));
      }
    }

    TagSet tagSet = new TagSet(tags);

    switch (config.readPreferenceType()) {
      case 1:
        optionsBuilder.readPreference(ReadPreference.nearest(tagSet));
        break;
      case 2:
        optionsBuilder.readPreference(ReadPreference.primary());
        break;
      case 3:
        optionsBuilder.readPreference(ReadPreference.primaryPreferred(tagSet));
        break;
      case 4:
        optionsBuilder.readPreference(ReadPreference.secondary(tagSet));
        break;
      case 5:
        optionsBuilder.readPreference(ReadPreference.secondaryPreferred(tagSet));
        break;
    }

    return optionsBuilder.build();
  }