Interface EnvironmentBuilder

All Known Implementing Classes:
StreamEnvironmentBuilder

public interface EnvironmentBuilder
API to configure and create an Environment.
See Also:
  • Method Details Link icon

    • uri Link icon

      The URI of a node to connect to.

      URI must be of the form rabbitmq-stream://guest:guest@localhost:5552/%2f.

      Parameters:
      uri -
      Returns:
      this builder instance
    • uris Link icon

      A list of URIs of nodes of the same cluster to use to connect to.

      URIs must be of the form rabbitmq-stream://guest:guest@localhost:5552/%2f.

      Parameters:
      uris -
      Returns:
      this builder instance
    • addressResolver Link icon

      EnvironmentBuilder addressResolver(AddressResolver addressResolver)
      An AddressResolver to potentially change resolved node address to connect to.

      Applications can use this abstraction to make sure connection attempts ignore metadata hints and always go to a single point like a load balancer. Consider setting locatorConnectionCount(int) when using a load balancer.

      The default implementation does not perform any logic, it just returns the passed-in address.

      The default implementation is overridden automatically if the following conditions are met: the host to connect to is localhost, the user is guest, and no address resolver has been provided. The client will then always try to connect to localhost to facilitate local development. Just provide a pass-through address resolver to avoid this behavior, e.g.:

       Environment.builder()
         .addressResolver(address -> address)
         .build();
       
      Parameters:
      addressResolver - the address resolver
      Returns:
      this builder instance
      See Also:
    • host Link icon

      The host to connect to.
      Parameters:
      host -
      Returns:
      this builder instance
    • port Link icon

      EnvironmentBuilder port(int port)
      The port to use to connect.
      Parameters:
      port -
      Returns:
      this builder instance
    • codec Link icon

      EnvironmentBuilder codec(Codec codec)
      The AMQP 1.0 codec used to encode and decode AMQP 1.0 messages.
      Parameters:
      codec -
      Returns:
      this builder instance
    • id Link icon

      Informational ID for this environment instance.

      This is currently used as a prefix for connection names. The broker does not enforce any kind of uniqueness based on this property. Default to rabbitmq-stream.

      Parameters:
      id -
      Returns:
      this builder instance
    • compressionCodecFactory Link icon

      EnvironmentBuilder compressionCodecFactory(CompressionCodecFactory compressionCodecFactory)
      Compression codec factory to use for compression in sub-entry batching.
      Parameters:
      compressionCodecFactory -
      Returns:
      this builder instance
      See Also:
    • rpcTimeout Link icon

      EnvironmentBuilder rpcTimeout(Duration timeout)
      Timeout for RPC calls.

      Default is 10 seconds.

      Parameters:
      timeout -
      Returns:
      this builder instance
    • saslConfiguration Link icon

      EnvironmentBuilder saslConfiguration(SaslConfiguration saslConfiguration)
      The SASL configuration to use.
      Parameters:
      saslConfiguration -
      Returns:
      this builder instance
      See Also:
    • credentialsProvider Link icon

      EnvironmentBuilder credentialsProvider(CredentialsProvider credentialsProvider)
      Parameters:
      credentialsProvider -
      Returns:
      this builder instance
      See Also:
    • username Link icon

      EnvironmentBuilder username(String username)
      The username to use.
      Parameters:
      username -
      Returns:
      this builder instance
    • password Link icon

      EnvironmentBuilder password(String password)
      The password to use.
      Parameters:
      password -
      Returns:
      this builder instance
    • virtualHost Link icon

      EnvironmentBuilder virtualHost(String virtualHost)
      The virtual host to connect to.
      Parameters:
      virtualHost -
      Returns:
      this builder instance
    • requestedHeartbeat Link icon

      EnvironmentBuilder requestedHeartbeat(Duration requestedHeartbeat)
      The heartbeat to request.

      Default is 60 seconds.

      Parameters:
      requestedHeartbeat -
      Returns:
      this builder instance
      See Also:
    • requestedMaxFrameSize Link icon

      EnvironmentBuilder requestedMaxFrameSize(int requestedMaxFrameSize)
      The maximum frame size to request.

      Default is 1048576.

      Parameters:
      requestedMaxFrameSize -
      Returns:
      this builder instance
      See Also:
    • chunkChecksum Link icon

      EnvironmentBuilder chunkChecksum(ChunkChecksum chunkChecksum)
      The checksum strategy used for chunk checksum.

      The default is CRC32 based on JDK implementation.

      Parameters:
      chunkChecksum -
      Returns:
      this builder instance
    • clientProperties Link icon

      EnvironmentBuilder clientProperties(Map<String,String> clientProperties)
      Custom client properties to add to default client properties.
      Parameters:
      clientProperties -
      Returns:
      this builder instance
    • clientProperty Link icon

      EnvironmentBuilder clientProperty(String key, String value)
      Add a custom client properties to default client properties.
      Parameters:
      key -
      value -
      Returns:
      this builder instance
    • metricsCollector Link icon

      EnvironmentBuilder metricsCollector(MetricsCollector metricsCollector)
      Parameters:
      metricsCollector -
      Returns:
      this builder instance
    • observationCollector Link icon

      EnvironmentBuilder observationCollector(ObservationCollector<?> observationCollector)
      Parameters:
      observationCollector -
      Returns:
      this builder instance
    • maxProducersByConnection Link icon

      EnvironmentBuilder maxProducersByConnection(int maxProducersByConnection)
      The maximum number of producers allocated to a single connection.

      Default is 256, which is the maximum value.

      The limit may not be strictly enforced in case of too many concurrent creations.

      Parameters:
      maxProducersByConnection -
      Returns:
      this builder instance
    • maxTrackingConsumersByConnection Link icon

      EnvironmentBuilder maxTrackingConsumersByConnection(int maxTrackingConsumersByConnection)
      The maximum number of tracking consumers allocated to a single connection.

      Default is 50, which is the maximum value.

      The limit may not be strictly enforced in case of too many concurrent creations.

      Parameters:
      maxTrackingConsumersByConnection -
      Returns:
      this builder instance
    • maxConsumersByConnection Link icon

      EnvironmentBuilder maxConsumersByConnection(int maxConsumersByConnection)
      The maximum number of consumers allocated to a single connection.

      Default is 256, which is the maximum value.

      The limit may not be strictly enforced in case of too many concurrent creations.

      Parameters:
      maxConsumersByConnection -
      Returns:
      this builder instance
    • scheduledExecutorService Link icon

      EnvironmentBuilder scheduledExecutorService(ScheduledExecutorService scheduledExecutorService)
      Set the ScheduledExecutorService used to:
      • Schedule producers batch sending
      • Handle connection recovery
      • Handle topology update
      Parameters:
      scheduledExecutorService - the service to use
      Returns:
      this builder instance
    • recoveryBackOffDelayPolicy Link icon

      EnvironmentBuilder recoveryBackOffDelayPolicy(BackOffDelayPolicy recoveryBackOffDelayPolicy)
      The BackOffDelayPolicy to use for connection recovery.

      The default is a fixed delay of 5 seconds.

      Parameters:
      recoveryBackOffDelayPolicy -
      Returns:
      this builder instance
    • topologyUpdateBackOffDelayPolicy Link icon

      EnvironmentBuilder topologyUpdateBackOffDelayPolicy(BackOffDelayPolicy topologyUpdateBackOffDelayPolicy)
      The BackOffDelayPolicy to use for topology recovery.

      Topology recovery can kick in when streams leaders and replicas move from nodes to nodes in the cluster.

      The default is a first delay of 5 seconds, then 1 second for the next attempts.

      Parameters:
      topologyUpdateBackOffDelayPolicy -
      Returns:
      this builder instance
    • lazyInitialization Link icon

      EnvironmentBuilder lazyInitialization(boolean lazy)
      To delay the connection opening until necessary.

      No connection will be open before it is necessary (for stream management or producer/consumer creation).

      Default is false.

      Parameters:
      lazy -
      Returns:
      this builder instance
    • forceReplicaForConsumers Link icon

      EnvironmentBuilder forceReplicaForConsumers(boolean forceReplica)
      Flag to force the connection to a stream replica for consumers.

      The library will always prefer to connect to a stream replica to consume from, but it will fall back to the stream leader if no replica is available. This is the default behavior. Set this flag to true to make the library wait for a replica to become available if only the stream leader is available. This can lead to longer recovery time but help to offload a stream leader and let it deal only with write requests.

      Note the library performs only 5 attempts to locate a replica before falling back to the leader when the flag is set to true.

      The recoveryBackOffDelayPolicy(BackOffDelayPolicy) and topologyUpdateBackOffDelayPolicy(BackOffDelayPolicy) policies control the time between attempts.

      Do not set this flag to true when streams have only 1 member (the leader), e.g. for local development.

      Default is false.

      Parameters:
      forceReplica - whether to force the connection to a replica or not
      Returns:
      this builder instance
      Since:
      0.13.0
      See Also:
    • forceLeaderForProducers Link icon

      EnvironmentBuilder forceLeaderForProducers(boolean forceLeader)
      Flag to force the connection to the stream leader for producers.

      The library prefers to connect to a node that hosts a stream leader for producers (default behavior).

      When using a load balancer, the library does not know in advance the node it connects to. It may have to retry to connect to the appropriate node.

      It will retry until it connects to the appropriate node (flag set to true, the default). This provides the best data locality, but may require several attempts, delaying the creation or the recovery of producers. This usually suits high-throughput use cases.

      The library will accept the connection to a stream replica if the flag is set to false . This will speed up the creation/recovery of producers, but at the cost of network hops between cluster nodes when publishing messages because only a stream leader accepts writes. This is usually acceptable for low-throughput use cases.

      Changing the default value should only benefit systems where a load balancer sits between the client applications and the cluster nodes.

      Default is true.

      Parameters:
      forceLeader - whether to force the connection to the leader or not
      Returns:
      this builder instance
      Since:
      0.21.0
      See Also:
    • locatorConnectionCount Link icon

      StreamEnvironmentBuilder locatorConnectionCount(int locatorConnectionCount)
      Set the expected number of "locator" connections to maintain.

      Locator connections are used to perform infrastructure-related operations (e.g. looking up the topology of a stream to find an appropriate node to connect to).

      It is recommended to maintain 2 to 3 locator connections. The environment uses the smaller of the number of passed-in URIs and 3 by default (see uris(List)).

      The number of locator connections should be explicitly set when a load balancer is used, as the environment cannot know the number of cluster nodes in this case (the only URI set is the one of the load balancer).

      Parameters:
      locatorConnectionCount - number of expected locator connections
      Returns:
      this builder instance
      Since:
      0.21.0
      See Also:
    • build Link icon

      Environment build()
      Create the Environment instance.
      Returns:
      the configured environment
    • tls Link icon

      Enable and configure TLS.
      Returns:
      the TLS configuration helper
    • netty Link icon

      Helper to configure netty.
      Returns:
      Netty configuration helper