Class CoreEnvironment.Builder<SELF extends CoreEnvironment.Builder<SELF>>

java.lang.Object
com.couchbase.client.core.env.CoreEnvironment.Builder<SELF>
Enclosing class:
CoreEnvironment

public static class CoreEnvironment.Builder<SELF extends CoreEnvironment.Builder<SELF>> extends Object
  • Field Details

  • Constructor Details

    • Builder

      protected Builder()
  • Method Details

    • ioEnvironment

      public SELF ioEnvironment(Consumer<IoEnvironment.Builder> builderConsumer)
      Passes the IoEnvironment.Builder to the provided consumer.

      Allows customizing I/O thread pools and other resources. For more I/O settings, see: ioConfig(Consumer)

      Parameters:
      builderConsumer - configures the builder.
      Returns:
      this CoreEnvironment.Builder for chaining purposes.
    • ioConfig

      public SELF ioConfig(Consumer<IoConfig.Builder> builderConsumer)
      Passes the IoConfig.Builder to the provided consumer.

      This is the main way to control how the SDK behaves at the lower levels. It allows customizing settings such as tcp keepalive, number of connections, circuit breakers, etc.

      Parameters:
      builderConsumer - configures the builder.
      Returns:
      this CoreEnvironment.Builder for chaining purposes.
    • compressionConfig

      public SELF compressionConfig(Consumer<CompressionConfig.Builder> builderConsumer)
      Passes the CompressionConfig.Builder to the provided consumer.

      Allows customizing document value compression settings.

      Usually this does not need to be tuned, but thresholds can be modified or compression can be disabled completely if needed.

      Parameters:
      builderConsumer - configures the builder.
      Returns:
      this CoreEnvironment.Builder for chaining purposes.
    • securityConfig

      public SELF securityConfig(Consumer<SecurityConfig.Builder> builderConsumer)
      Passes the SecurityConfig.Builder to the provided consumer.

      Allows configuring everything related to TLS/encrypted connections.

      Note that if you are looking to use client certificate authentication, please refer to the CertificateAuthenticator instead.

      Parameters:
      builderConsumer - configures the builder.
      Returns:
      this CoreEnvironment.Builder for chaining purposes.
    • timeoutConfig

      public SELF timeoutConfig(Consumer<TimeoutConfig.Builder> builderConsumer)
      Passes the TimeoutConfig.Builder to the provided consumer.

      Allows customizing the default timeouts for all operations.

      The default timeout can be overridden on a per-request basis using the "timeout" property of the request's option block.

      Parameters:
      builderConsumer - configures the builder.
      Returns:
      this CoreEnvironment.Builder for chaining purposes.
    • loggerConfig

      public SELF loggerConfig(Consumer<LoggerConfig.Builder> builderConsumer)
      Passes the LoggerConfig.Builder to the provided consumer.
      Parameters:
      builderConsumer - configures the builder.
      Returns:
      this CoreEnvironment.Builder for chaining purposes.
    • orphanReporterConfig

      public SELF orphanReporterConfig(Consumer<OrphanReporterConfig.Builder> builderConsumer)
      Passes the OrphanReporterConfig.Builder to the provided consumer.

      Allows customizing the behavior of the orphan response reporter.

      The orphan reporter logs all responses that arrived when the requesting side is not listening anymore (usually because of a timeout). The config can be modified to tune certain properties like the sample size or the emit interval.

      Parameters:
      builderConsumer - configures the builder.
      Returns:
      this CoreEnvironment.Builder for chaining purposes.
    • thresholdLoggingTracerConfig

      public SELF thresholdLoggingTracerConfig(Consumer<ThresholdLoggingTracerConfig.Builder> builderConsumer)
      Passes the ThresholdLoggingTracerConfig.Builder to the provided consumer.
      Parameters:
      builderConsumer - configures the builder.
      Returns:
      this CoreEnvironment.Builder for chaining purposes.
    • loggingMeterConfig

      public SELF loggingMeterConfig(Consumer<LoggingMeterConfig.Builder> builderConsumer)
      Passes the LoggingMeterConfig.Builder to the provided consumer.
      Parameters:
      builderConsumer - configures the builder.
      Returns:
      this CoreEnvironment.Builder for chaining purposes.
    • self

      protected SELF self()
    • maxNumRequestsInRetry

      public SELF maxNumRequestsInRetry(long maxNumRequestsInRetry)
      Allows to customize the maximum number of requests allowed in the retry timer.

      If the CoreEnvironment.DEFAULT_MAX_NUM_REQUESTS_IN_RETRY is reached, each request that would be queued for retry is instead cancelled with a CancellationReason.TOO_MANY_REQUESTS_IN_RETRY. This acts as a form of safety net and backpressure.

      Parameters:
      maxNumRequestsInRetry - the maximum number of requests outstanding for retry.
      Returns:
      this CoreEnvironment.Builder for chaining purposes.
    • load

      Immediately loads the properties from the given loader into the environment.
      Parameters:
      loader - the loader to load the properties from.
      Returns:
      this CoreEnvironment.Builder for chaining purposes.
    • ioEnvironment

      @Deprecated public SELF ioEnvironment(IoEnvironment.Builder ioEnvironment)
      Deprecated.
      This method clobbers any previously configured values. Please use ioEnvironment(Consumer) instead.
      Allows to customize I/O thread pools.

      Note that the IoEnvironment holds thread pools and other resources. If you do not want to customize thread pool sizes, you likely want to look at the IoConfig instead.

      Parameters:
      ioEnvironment - the IO environment to customize.
      Returns:
      this CoreEnvironment.Builder for chaining purposes.
    • ioEnvironment

      @Deprecated public IoEnvironment.Builder ioEnvironment()
      Deprecated.
      Please use ioEnvironmentConfig() instead.
      Returns the currently stored IoEnvironment builder.
      Returns:
      the current builder.
    • ioEnvironmentConfig

      public IoEnvironment.Builder ioEnvironmentConfig()
      Returns the currently stored IoEnvironment builder.
      Returns:
      the current builder.
    • ioConfig

      @Deprecated public SELF ioConfig(IoConfig.Builder ioConfig)
      Deprecated.
      This method clobbers any previously configured values. Please use ioConfig(Consumer) instead.
      Allows to customize various I/O-related configuration properties.

      The I/O config is the main way to control how the SDK behaves at the lower levels. It allows to customize properties such as tcp keepalive, number of connections, circuit breakers, etc.

      Parameters:
      ioConfig - the custom I/O config to use.
      Returns:
      this CoreEnvironment.Builder for chaining purposes.
    • ioConfig

      public IoConfig.Builder ioConfig()
      Returns the currently stored config builder.
      Returns:
      the current builder.
    • orphanReporterConfig

      @Deprecated public SELF orphanReporterConfig(OrphanReporterConfig.Builder orphanReporterConfig)
      Deprecated.
      This method clobbers any previously configured values. Please use orphanReporterConfig(Consumer) instead.
      Allows to customize the behavior of the orphan response reporter.

      The orphan reporter logs all responses that arrived when the requesting side is not listening anymore (usually because of a timeout). The config can be modified to tune certain properties like the sample size or the emit interval.

      Parameters:
      orphanReporterConfig - the custom orphan reporter config.
      Returns:
      this CoreEnvironment.Builder for chaining purposes.
    • orphanReporterConfig

      public OrphanReporterConfig.Builder orphanReporterConfig()
      Returns the currently stored config builder.
      Returns:
      the current builder.
    • loggingMeterConfig

      @Deprecated public SELF loggingMeterConfig(LoggingMeterConfig.Builder loggingMeterConfig)
      Deprecated.
      This method clobbers any previously configured values. Please use loggingMeterConfig(Consumer) instead.
    • loggingMeterConfig

      public LoggingMeterConfig.Builder loggingMeterConfig()
    • thresholdRequestTracerConfig

      @Deprecated public SELF thresholdRequestTracerConfig(ThresholdRequestTracerConfig.Builder thresholdRequestTracerConfig)
      Deprecated.
      This method clobbers any previously configured values. Please use thresholdLoggingTracerConfig(Consumer) instead.
      Allows to customize the threshold request tracer configuration.
      Parameters:
      thresholdRequestTracerConfig - the configuration which should be used.
      Returns:
      this CoreEnvironment.Builder for chaining purposes.
    • thresholdRequestTracerConfig

      @Deprecated public ThresholdRequestTracerConfig.Builder thresholdRequestTracerConfig()
      Deprecated.
    • thresholdLoggingTracerConfig

      @Deprecated public SELF thresholdLoggingTracerConfig(ThresholdLoggingTracerConfig.Builder thresholdLoggingTracerConfig)
      Deprecated.
      This method clobbers any previously configured values. Please use thresholdLoggingTracerConfig(Consumer) instead.
      Allows to customize the threshold request tracer configuration.
      Parameters:
      thresholdLoggingTracerConfig - the configuration which should be used.
      Returns:
      this CoreEnvironment.Builder for chaining purposes.
    • publishOnScheduler

      @Volatile public SELF publishOnScheduler(@Nullable Supplier<Scheduler> publishOnScheduler)
      Specifies the supplier the SDK uses to get the Scheduler for publishing Reactive API results.

      Defaults to null, which means reactive results are published immediately in a thread owned by the SDK -- typically the SDK's Netty event loop.

      The supplier is invoked once for every subscription, by the same thread that subscribes to the Mono/Flux.

      Returns:
      this CoreEnvironment.Builder for chaining purposes.
    • thresholdLoggingTracerConfig

      public ThresholdLoggingTracerConfig.Builder thresholdLoggingTracerConfig()
    • compressionConfig

      @Deprecated public SELF compressionConfig(CompressionConfig.Builder compressionConfig)
      Deprecated.
      This method clobbers any previously configured values. Please use compressionConfig(Consumer) instead.
      Allows to customize document value compression settings.

      Usually this does not need to be tuned, but thresholds can be modified or compression can be disabled completely if needed.

      Parameters:
      compressionConfig - the custom compression config.
      Returns:
      this CoreEnvironment.Builder for chaining purposes.
    • compressionConfig

      public CompressionConfig.Builder compressionConfig()
      Returns the currently stored config builder.
      Returns:
      the current builder.
    • securityConfig

      @Deprecated public SELF securityConfig(SecurityConfig.Builder securityConfig)
      Deprecated.
      This method clobbers any previously configured values. Please use securityConfig(Consumer) instead.
      Allows to configure everything related to TLS/encrypted connections.

      Note that if you are looking to use client certificate authentication, please refer to the CertificateAuthenticator instead.

      Parameters:
      securityConfig - the custom security config to use.
      Returns:
      this CoreEnvironment.Builder for chaining purposes.
    • securityConfig

      public SecurityConfig.Builder securityConfig()
      Returns the currently stored config builder.
      Returns:
      the current builder.
    • timeoutConfig

      @Deprecated public SELF timeoutConfig(TimeoutConfig.Builder timeoutConfig)
      Deprecated.
      This method clobbers any previously configured values. Please use timeoutConfig(Consumer) instead.
      Allows to customize the default timeouts for all operations.

      Each timeout can also be modified on a per-request basis in their respective options blocks.

      Parameters:
      timeoutConfig - the custom timeout config to use.
      Returns:
      this CoreEnvironment.Builder for chaining purposes.
    • timeoutConfig

      public TimeoutConfig.Builder timeoutConfig()
      Returns the currently stored config builder.
      Returns:
      the current builder.
    • loggerConfig

      @Deprecated public SELF loggerConfig(LoggerConfig.Builder loggerConfig)
      Deprecated.
      This method clobbers any previously configured values. Please use loggerConfig(Consumer) instead.
      Allows to provide a custom configuration for the default logger used.

      The default logger attaches itself to the EventBus on the environment and logs consumed events. This configuration allows to customize its behavior, diagnostic context etc.

      Parameters:
      loggerConfig - the custom logger config to use.
      Returns:
      this CoreEnvironment.Builder for chaining purposes.
    • loggerConfig

      public LoggerConfig.Builder loggerConfig()
      Returns the currently stored config builder.
      Returns:
      the current builder.
    • eventBus

      @Uncommitted public SELF eventBus(EventBus eventBus)
      Customizes the event bus for the SDK.

      The SDK ships with a high-performance implementation of a event bus. Only swap out if you have special needs, usually what you want instead is to register your own consumer on the event bus instead (EventBus.subscribe(Consumer))!

      Parameters:
      eventBus - the event bus to use.
      Returns:
      this CoreEnvironment.Builder for chaining purposes.
    • scheduler

      @Uncommitted public SELF scheduler(Scheduler scheduler)
      Customizes the default Reactor scheduler used for parallel operations.

      Usually you do not need to modify the scheduler, use with care.

      Parameters:
      scheduler - a custom scheduler to use.
      Returns:
      this CoreEnvironment.Builder for chaining purposes.
    • schedulerThreadCount

      @Uncommitted public SELF schedulerThreadCount(int schedulerThreadCount)
      Customizes the thread count for the CoreEnvironment.scheduler() if not customized by scheduler(Scheduler).

      By default, Schedulers.DEFAULT_POOL_SIZE is used. Note that if the scheduler itself is customized, this value is ignored.

      Parameters:
      schedulerThreadCount - the number of threads to use for the scheduler.
      Returns:
      this CoreEnvironment.Builder for chaining purposes.
    • retryStrategy

      public SELF retryStrategy(RetryStrategy retryStrategy)
      Allows to customize the default retry strategy.

      Note that this setting modifies the SDK-wide retry strategy. It can still be overridden on a per-request basis in the respective options block.

      Parameters:
      retryStrategy - the default retry strategy to use for all operations.
      Returns:
      this CoreEnvironment.Builder for chaining purposes.
    • requestTracer

      @Volatile public SELF requestTracer(RequestTracer requestTracer)
      Allows to configure a custom tracer implementation.

      IMPORTANT: this is a volatile, likely to change API!

      Parameters:
      requestTracer - the custom request tracer to use.
      Returns:
      this CoreEnvironment.Builder for chaining purposes.
    • meter

      @Volatile public SELF meter(Meter meter)
      Allows to configure a custom metrics implementation.

      IMPORTANT: this is a volatile, likely to change API!

      Parameters:
      meter - the custom metrics implementation to use.
      Returns:
      this CoreEnvironment.Builder for chaining purposes.
    • transactionsConfig

      @Internal public SELF transactionsConfig(CoreTransactionsConfig transactionsConfig)
      Allows configuring the transactions config.
      Returns:
      this CoreEnvironment.Builder for chaining purposes.
    • addRequestCallback

      @Internal public SELF addRequestCallback(RequestCallback requestCallback)
      Allows to configure callbacks across the lifetime of a request.

      IMPORTANT: this is internal API and might change at any point in time.

      Parameters:
      requestCallback - the callback to use.
      Returns:
      this CoreEnvironment.Builder for chaining purposes.
    • build

      public CoreEnvironment build()
      Turns this builder into a real CoreEnvironment.
      Returns:
      the created core environment.
    • applyProfile

      @Volatile public SELF applyProfile(String profileName)
      Applies custom properties based on a profile name.

      At the moment only the "wan-development" profile is supported, but its actual values are not determined yet. Since this is volatile API, the actual profile names and their properties are subject to change.

      New profiles can be registered by utilizing the ServiceRegistry mechanism. Create a file with the name of "com.couchbase.client.core.env.ConfigurationProfile" in your META-INF/services folder and the content contains each line of classes that implement the "EnvironmentProfile" interface. See the WanDevelopmentProfile for examples and usage.

      Returns:
      this CoreEnvironment.Builder for chaining purposes.
    • preferredServerGroup

      public SELF preferredServerGroup(@Nullable String preferredServerGroup)
      Sets a preferred server group, that will be used for operations that support this feature.
      Returns:
      this CoreEnvironment.Builder for chaining purposes.
    • loadSystemProperties

      @Internal public SELF loadSystemProperties()
      You might wonder why callers can't use load(PropertyLoader) to load system properties.

      It's because that method requires a raw builder type, while SystemPropertyPropertyLoader's builder type has an unbounded wildcard.

      Fixing the types would be a source-incompatible change. We'll get it right next time!