Class ClusterSettings

java.lang.Object
com.mongodb.connection.ClusterSettings

@Immutable public final class ClusterSettings extends Object
Settings for the cluster.
Since:
3.0
  • Method Details

    • builder

      public static ClusterSettings.Builder builder()
      Get a builder for this class.
      Returns:
      a new Builder for creating ClusterSettings.
    • builder

      public static ClusterSettings.Builder builder(ClusterSettings clusterSettings)
      Creates a builder instance.
      Parameters:
      clusterSettings - existing ClusterSettings to default the builder settings on.
      Returns:
      a builder
      Since:
      3.5
    • getSrvHost

      @Nullable public String getSrvHost()
      Gets the host name from which to lookup SRV record for the seed list
      Returns:
      the SRV host, or null if none specified
      Since:
      3.10
    • getSrvMaxHosts

      @Nullable public Integer getSrvMaxHosts()
      Gets the maximum number of hosts to connect to when using SRV protocol. This setting is not used if getMode() is ClusterConnectionMode.LOAD_BALANCED.
      Returns:
      the maximum number of hosts to connect to when using SRV protocol. Defaults to null.
      Since:
      4.4
      See Also:
    • getSrvServiceName

      public String getSrvServiceName()
      Gets the SRV service name.

      The SRV resource record (RFC 2782) service name, which is limited to 15 characters (RFC 6335 section 5.1). It is combined with the host name specified by getSrvHost() as follows: _srvServiceName._tcp.hostName. The combined string is an SRV resource record name (RFC 1035 section 2.3.1), which is limited to 255 characters (RFC 1035 section 2.3.4).

      Returns:
      the SRV service name, which defaults to "mongodb"
      Since:
      4.5
      See Also:
    • getHosts

      public List<ServerAddress> getHosts()
      Gets the seed list of hosts for the cluster.
      Returns:
      the seed list of hosts
    • getMode

      public ClusterConnectionMode getMode()
      Gets the mode.
      Returns:
      the mode
    • getRequiredClusterType

      public ClusterType getRequiredClusterType()
      Gets the required cluster type This setting is not used if getMode() is ClusterConnectionMode.LOAD_BALANCED.
      Returns:
      the required cluster type
      See Also:
    • getRequiredReplicaSetName

      @Nullable public String getRequiredReplicaSetName()
      Gets the required replica set name. This setting is not used if getMode() is ClusterConnectionMode.LOAD_BALANCED.
      Returns:
      the required replica set name
      See Also:
    • getServerSelector

      @Nullable public ServerSelector getServerSelector()
      Gets the server selector.

      The server selector augments the normal server selection rules applied by the driver when determining which server to send an operation to. At the point that it's called by the driver, the ClusterDescription which is passed to it contains a list of ServerDescription instances which satisfy either the configured ReadPreference for any read operation or ones that can take writes (e.g. a standalone, mongos, or replica set primary).

      The server selector can then filter the ServerDescription list using whatever criteria that is required by the application.

      After this selector executes, two additional selectors are applied by the driver:

      • select from within the latency window
      • select a random server from those remaining

      To skip the latency window selector, an application can:

      • configure the local threshold to a sufficiently high value so that it doesn't exclude any servers
      • return a list containing a single server from this selector (which will also make the random member selector a no-op)
      Returns:
      the server selector, which may be null
    • getServerSelectionTimeout

      public long getServerSelectionTimeout(TimeUnit timeUnit)
      Gets the timeout to apply when selecting a server. If the timeout expires before a server is found to handle a request, a MongoTimeoutException will be thrown. The default value is 30 seconds.

      A value of 0 means that it will timeout immediately if no server is available. A negative value means to wait indefinitely.

      Parameters:
      timeUnit - the time unit
      Returns:
      the timeout in the given time unit
    • getLocalThreshold

      public long getLocalThreshold(TimeUnit timeUnit)
      Gets the local threshold. When choosing among multiple MongoDB servers to send a request, the MongoClient will only send that request to a server whose ping time is less than or equal to the server with the fastest ping time plus the local threshold.

      For example, let's say that the client is choosing a server to send a query when the read preference is ReadPreference.secondary(), and that there are three secondaries, server1, server2, and server3, whose ping times are 10, 15, and 16 milliseconds, respectively. With a local threshold of 5 milliseconds, the client will send the query to either server1 or server2 (randomly selecting between the two).

      Default is 15 milliseconds.

      Parameters:
      timeUnit - the time unit
      Returns:
      the local threshold in the given timeunit.
      Since:
      3.7
      MongoDB documentation
      Local Threshold
    • getClusterListeners

      public List<ClusterListener> getClusterListeners()
      Gets the cluster listeners. The default value is an empty list.
      Returns:
      the cluster listeners
      Since:
      3.3
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • getShortDescription

      public String getShortDescription()
      Returns a short, pretty description for these ClusterSettings.
      Returns:
      a String description of the relevant settings.