Class WanBatchPublisherConfig

  • All Implemented Interfaces:
    DataSerializable, IdentifiedDataSerializable

    public class WanBatchPublisherConfig
    extends AbstractWanPublisherConfig
    Configuration object for the built-in WAN publisher (available in Hazelcast Enterprise). The publisher sends events to another Hazelcast cluster in batches, sending when either when enough events are enqueued or enqueued events have waited for enough time. The publisher can be a different cluster defined by static IP's or discovered using a cloud discovery mechanism.
    See Also:
    DiscoveryConfig, AwsConfig
    • Field Detail

      • DEFAULT_CLUSTER_NAME

        public static final java.lang.String DEFAULT_CLUSTER_NAME
        See Also:
        Constant Field Values
      • DEFAULT_SNAPSHOT_ENABLED

        public static final boolean DEFAULT_SNAPSHOT_ENABLED
        See Also:
        Constant Field Values
      • DEFAULT_INITIAL_PUBLISHER_STATE

        public static final WanPublisherState DEFAULT_INITIAL_PUBLISHER_STATE
      • DEFAULT_BATCH_MAX_DELAY_MILLIS

        public static final int DEFAULT_BATCH_MAX_DELAY_MILLIS
        See Also:
        Constant Field Values
      • DEFAULT_RESPONSE_TIMEOUT_MILLIS

        public static final int DEFAULT_RESPONSE_TIMEOUT_MILLIS
        See Also:
        Constant Field Values
      • DEFAULT_QUEUE_FULL_BEHAVIOUR

        public static final WanQueueFullBehavior DEFAULT_QUEUE_FULL_BEHAVIOUR
      • DEFAULT_ACKNOWLEDGE_TYPE

        public static final WanAcknowledgeType DEFAULT_ACKNOWLEDGE_TYPE
      • DEFAULT_DISCOVERY_PERIOD_SECONDS

        public static final int DEFAULT_DISCOVERY_PERIOD_SECONDS
        See Also:
        Constant Field Values
      • DEFAULT_MAX_TARGET_ENDPOINTS

        public static final int DEFAULT_MAX_TARGET_ENDPOINTS
        See Also:
        Constant Field Values
      • DEFAULT_MAX_CONCURRENT_INVOCATIONS

        public static final int DEFAULT_MAX_CONCURRENT_INVOCATIONS
        See Also:
        Constant Field Values
      • DEFAULT_USE_ENDPOINT_PRIVATE_ADDRESS

        public static final boolean DEFAULT_USE_ENDPOINT_PRIVATE_ADDRESS
        See Also:
        Constant Field Values
      • DEFAULT_IDLE_MIN_PARK_NS

        public static final long DEFAULT_IDLE_MIN_PARK_NS
      • DEFAULT_IDLE_MAX_PARK_NS

        public static final long DEFAULT_IDLE_MAX_PARK_NS
      • DEFAULT_TARGET_ENDPOINTS

        public static final java.lang.String DEFAULT_TARGET_ENDPOINTS
        See Also:
        Constant Field Values
    • Constructor Detail

      • WanBatchPublisherConfig

        public WanBatchPublisherConfig()
    • Method Detail

      • getClusterName

        @Nonnull
        public java.lang.String getClusterName()
        Returns the cluster name used as a publisher cluster name for authentication on the target endpoint. If there is no separate publisher ID property defined, this cluster name will also be used as a WAN publisher ID. This ID is then used for identifying the publisher in a WanReplicationConfig.
        Returns:
        the WAN endpoint cluster name
        See Also:
        AbstractWanPublisherConfig.getPublisherId()
      • setClusterName

        public WanBatchPublisherConfig setClusterName​(@Nonnull
                                                      java.lang.String clusterName)
        Sets the cluster name used as an endpoint group password for authentication on the target endpoint. If there is no separate publisher ID property defined, this cluster name will also be used as a WAN publisher ID. This ID is then used for identifying the publisher in a WanReplicationConfig.
        Parameters:
        clusterName - the WAN endpoint cluster name
        Returns:
        this config
        See Also:
        AbstractWanPublisherConfig.getPublisherId()
      • isSnapshotEnabled

        public boolean isSnapshotEnabled()
        Returns true if key-based coalescing is configured for this WAN publisher. When enabled, only the latest WanEvent of a key is sent to target.
        See Also:
        isSnapshotEnabled()
      • setSnapshotEnabled

        public WanBatchPublisherConfig setSnapshotEnabled​(boolean snapshotEnabled)
        Sets if key-based coalescing is configured for this WAN publisher. When enabled, only the latest WanEvent of a key is sent to target.
        Returns:
        this config
        See Also:
        isSnapshotEnabled()
      • getBatchSize

        public int getBatchSize()
        Returns the maximum batch size that can be sent to target cluster.
        Returns:
        the maximum size of a WAN event batch
      • setBatchSize

        public WanBatchPublisherConfig setBatchSize​(int batchSize)
        Sets the maximum batch size that can be sent to target cluster.
        Parameters:
        batchSize - the maximum size of a WAN event batch
        Returns:
        this config
      • getBatchMaxDelayMillis

        public int getBatchMaxDelayMillis()
        Returns the maximum amount of time in milliseconds to wait before sending a batch of events to target cluster, if getBatchSize() of events have not arrived within this duration.
        Returns:
        maximum amount of time to wait before sending a batch of events
      • setBatchMaxDelayMillis

        public WanBatchPublisherConfig setBatchMaxDelayMillis​(int batchMaxDelayMillis)
        Sets the maximum amount of time in milliseconds to wait before sending a batch of events to target cluster, if getBatchSize() of events have not arrived within this duration.
        Parameters:
        batchMaxDelayMillis - maximum amount of time to wait before sending a batch of events
        Returns:
        this config
      • getResponseTimeoutMillis

        public int getResponseTimeoutMillis()
        Returns the duration in milliseconds for the wait time before retrying to send the events to target cluster again in case the acknowledgement has not arrived.
        Returns:
        timeout for response from target cluster
      • setResponseTimeoutMillis

        public WanBatchPublisherConfig setResponseTimeoutMillis​(int responseTimeoutMillis)
        Sets the duration in milliseconds for the waiting time before retrying to send the events to target cluster again in case of acknowledgement is not arrived.
        Parameters:
        responseTimeoutMillis - timeout for response from target cluster
        Returns:
        this config
      • getAcknowledgeType

        @Nonnull
        public WanAcknowledgeType getAcknowledgeType()
        Returns the strategy for when the target cluster should acknowledge that a WAN event batch has been processed.
        Returns:
        acknowledge type
      • setAcknowledgeType

        public WanBatchPublisherConfig setAcknowledgeType​(@Nonnull
                                                          WanAcknowledgeType acknowledgeType)
        Sets the strategy for when the target cluster should acknowledge that a WAN event batch has been processed.
        Parameters:
        acknowledgeType - acknowledge type
        Returns:
        this config
      • getSyncConfig

        public WanSyncConfig getSyncConfig()
        Returns the config for the WAN sync mechanism.
      • setSyncConfig

        public WanBatchPublisherConfig setSyncConfig​(WanSyncConfig syncConfig)
        Sets the config for the WAN sync mechanism.
        Parameters:
        syncConfig - the WAN sync config
        Returns:
        this config
      • getQueueCapacity

        public int getQueueCapacity()
        Returns the capacity of the primary and backup queue for WAN replication events.

        One hazelcast instance can have up to 2*queueCapacity events since we keep up to queueCapacity primary events (events with keys for which the instance is the owner) and queueCapacity backup events (events with keys for which the instance is the backup). Events for IMap and ICache count against this limit collectively.

        When the queue capacity is reached, backup events are dropped while normal replication events behave as determined by the getQueueFullBehavior().

        Returns:
        the queue capacity
      • setQueueCapacity

        public WanBatchPublisherConfig setQueueCapacity​(int queueCapacity)
        Sets the capacity of the primary and backup queue for WAN replication events.

        One hazelcast instance can have up to 2*queueCapacity events since we keep up to queueCapacity primary events (events with keys for which the instance is the owner) and queueCapacity backup events (events with keys for which the instance is the backup). Events for IMap and ICache count against this limit collectively.

        When the queue capacity is reached, backup events are dropped while normal replication events behave as determined by the getQueueFullBehavior().

        Parameters:
        queueCapacity - the queue capacity
        Returns:
        this config
      • getQueueFullBehavior

        @Nonnull
        public WanQueueFullBehavior getQueueFullBehavior()
        Returns the configured behaviour of this WAN publisher when the WAN queue is full.
      • setQueueFullBehavior

        public WanBatchPublisherConfig setQueueFullBehavior​(@Nonnull
                                                            WanQueueFullBehavior queueFullBehavior)
        Sets the configured behaviour of this WAN publisher when the WAN queue is full.
        Parameters:
        queueFullBehavior - the behaviour of this publisher when the WAN queue is full
        Returns:
        this config
      • getInitialPublisherState

        @Nonnull
        public WanPublisherState getInitialPublisherState()
        Returns the initial WAN publisher state.
      • setInitialPublisherState

        public WanBatchPublisherConfig setInitialPublisherState​(@Nonnull
                                                                WanPublisherState initialPublisherState)
        Sets the initial publisher state.
        Parameters:
        initialPublisherState - the state
        Returns:
        this configuration
      • getDiscoveryPeriodSeconds

        public int getDiscoveryPeriodSeconds()
        Returns the period in seconds in which WAN tries to discover new target endpoints and reestablish connections to failed endpoints.
        Returns:
        period for retrying connections to target endpoints
      • setDiscoveryPeriodSeconds

        public WanBatchPublisherConfig setDiscoveryPeriodSeconds​(int discoveryPeriodSeconds)
        Sets the period in seconds in which WAN tries to discover new target endpoints and reestablish connections to failed endpoints.
        Parameters:
        discoveryPeriodSeconds - period for retrying connections to target endpoints
        Returns:
        this config
      • getMaxTargetEndpoints

        public int getMaxTargetEndpoints()
        Returns the maximum number of endpoints that WAN will connect to when using a discovery mechanism to define endpoints. This property has no effect when static endpoint addresses are defined using setTargetEndpoints(String).
        Returns:
        maximum number of endpoints that WAN will connect to
      • setMaxTargetEndpoints

        public WanBatchPublisherConfig setMaxTargetEndpoints​(int maxTargetEndpoints)
        Sets the maximum number of endpoints that WAN will connect to when using a discovery mechanism to define endpoints. This property has no effect when static endpoint addresses are defined using setTargetEndpoints(String).
        Parameters:
        maxTargetEndpoints - maximum number of endpoints that WAN will connect to
        Returns:
        this config
      • getMaxConcurrentInvocations

        public int getMaxConcurrentInvocations()
        Returns the maximum number of WAN event batches being sent to the target cluster concurrently.

        Setting this property to anything less than 2 will only allow a single batch of events to be sent to each target endpoint and will maintain causality of events for a single partition.

        Setting this property to 2 or higher will allow multiple batches of WAN events to be sent to each target endpoint. Since this allows reordering or batches due to network conditions, causality and ordering of events for a single partition is lost and batches for a single partition are now sent randomly to any available target endpoint. This, however, does present faster WAN replication for certain scenarios such as replicating immutable, independent map entries which are only added once and where ordering of when these entries are added is not necessary. Keep in mind that if you set this property to a value which is less than the target endpoint count, you will lose performance as not all target endpoints will be used at any point in time to process WAN event batches. So, for instance, if you have a target cluster with 3 members (target endpoints) and you want to use this property, it makes sense to set it to a value higher than 3. Otherwise, you can simply disable it by setting it to less than 2 in which case WAN will use the default replication strategy and adapt to the target endpoint count while maintaining causality.

        Returns:
        the maximum number of WAN event batches being sent to the target cluster concurrently
      • setMaxConcurrentInvocations

        public WanBatchPublisherConfig setMaxConcurrentInvocations​(int maxConcurrentInvocations)
        Sets the maximum number of WAN event batches being sent to the target cluster concurrently.

        Setting this property to anything less than 2 will only allow a single batch of events to be sent to each target endpoint and will maintain causality of events for a single partition.

        Setting this property to 2 or higher will allow multiple batches of WAN events to be sent to each target endpoint. Since this allows reordering or batches due to network conditions, causality and ordering of events for a single partition is lost and batches for a single partition are now sent randomly to any available target endpoint. This, however, does present faster WAN replication for certain scenarios such as replicating immutable, independent map entries which are only added once and where ordering of when these entries are added is not necessary. Keep in mind that if you set this property to a value which is less than the target endpoint count, you will lose performance as not all target endpoints will be used at any point in time to process WAN event batches. So, for instance, if you have a target cluster with 3 members (target endpoints) and you want to use this property, it makes sense to set it to a value higher than 3. Otherwise, you can simply disable it by setting it to less than 2 in which case WAN will use the default replication strategy and adapt to the target endpoint count while maintaining causality.

        Parameters:
        maxConcurrentInvocations - the maximum number of WAN event batches being sent to the target cluster concurrently
        Returns:
        this config
      • isUseEndpointPrivateAddress

        public boolean isUseEndpointPrivateAddress()
        Returns whether the WAN connection manager should connect to the endpoint on the private address returned by the discovery SPI. By default this property is false which means the WAN connection manager will always use the public address.
        Returns:
        true if the WAN connection manager should connect to the endpoint on the private address returned by the discovery SPI
        See Also:
        DiscoveryNode.getPublicAddress(), DiscoveryNode.getPrivateAddress()
      • setUseEndpointPrivateAddress

        public WanBatchPublisherConfig setUseEndpointPrivateAddress​(boolean useEndpointPrivateAddress)
        Sets whether the WAN connection manager should connect to the endpoint on the private address returned by the discovery SPI. By default this property is false which means the WAN connection manager will always use the public address.
        Returns:
        this config
        See Also:
        DiscoveryNode.getPublicAddress(), DiscoveryNode.getPrivateAddress()
      • getIdleMinParkNs

        public long getIdleMinParkNs()
        Returns the minimum duration in nanoseconds that the WAN replication thread will be parked if there are no events to replicate.
        Returns:
        minimum duration in nanoseconds that the WAN replication thread will be parked
      • setIdleMinParkNs

        public WanBatchPublisherConfig setIdleMinParkNs​(long idleMinParkNs)
        Sets the minimum duration in nanoseconds that the WAN replication thread will be parked if there are no events to replicate.
        Parameters:
        idleMinParkNs - minimum duration in nanoseconds that the WAN replication thread will be parked
        Returns:
        this config
      • getIdleMaxParkNs

        public long getIdleMaxParkNs()
        Returns the maximum duration in nanoseconds that the WAN replication thread will be parked if there are no events to replicate.
        Returns:
        maximum duration in nanoseconds that the WAN replication thread will be parked
      • setIdleMaxParkNs

        public WanBatchPublisherConfig setIdleMaxParkNs​(long idleMaxParkNs)
        Sets the maximum duration in nanoseconds that the WAN replication thread will be parked if there are no events to replicate.
        Parameters:
        idleMaxParkNs - maximum duration in nanoseconds that the WAN replication thread will be parked
        Returns:
        this config
      • getAwsConfig

        public AwsConfig getAwsConfig()
        Returns the AwsConfig used by the discovery mechanism for this WAN publisher.
      • setAwsConfig

        public WanBatchPublisherConfig setAwsConfig​(AwsConfig awsConfig)
        Sets the AwsConfig used by the discovery mechanism for this WAN publisher.
        Parameters:
        awsConfig - the AWS discovery configuration
        Returns:
        this config
        Throws:
        java.lang.IllegalArgumentException - if awsConfig is null
      • getGcpConfig

        public GcpConfig getGcpConfig()
        Returns the GcpConfig used by the discovery mechanism for this WAN publisher.
      • setGcpConfig

        public WanBatchPublisherConfig setGcpConfig​(GcpConfig gcpConfig)
        Sets the GcpConfig used by the discovery mechanism for this WAN publisher.
        Parameters:
        gcpConfig - the GCP discovery configuration
        Returns:
        this config
        Throws:
        java.lang.IllegalArgumentException - if gcpConfig is null
      • getAzureConfig

        public AzureConfig getAzureConfig()
        Returns the AzureConfig used by the discovery mechanism for this WAN publisher.
      • setAzureConfig

        public WanBatchPublisherConfig setAzureConfig​(AzureConfig azureConfig)
        Sets the AzureConfig used by the discovery mechanism for this WAN publisher.
        Parameters:
        azureConfig - the Azure discovery configuration
        Returns:
        this config
        Throws:
        java.lang.IllegalArgumentException - if azureConfig is null
      • setKubernetesConfig

        public WanBatchPublisherConfig setKubernetesConfig​(KubernetesConfig kubernetesConfig)
        Sets the KubernetesConfig used by the discovery mechanism for this WAN publisher.
        Parameters:
        kubernetesConfig - the Kubernetes discovery configuration
        Returns:
        this config
        Throws:
        java.lang.IllegalArgumentException - if kubernetesConfig is null
      • getEurekaConfig

        public EurekaConfig getEurekaConfig()
        Returns the EurekaConfig used by the discovery mechanism for this WAN publisher.
      • setEurekaConfig

        public WanBatchPublisherConfig setEurekaConfig​(EurekaConfig eurekaConfig)
        Sets the EurekaConfig used by the discovery mechanism for this WAN publisher.
        Parameters:
        eurekaConfig - the Eureka discovery configuration
        Returns:
        this config
        Throws:
        java.lang.IllegalArgumentException - if eurekaConfig is null
      • getDiscoveryConfig

        public DiscoveryConfig getDiscoveryConfig()
        Returns the currently defined DiscoveryConfig used by the discovery mechanism for this WAN publisher.
        Returns:
        current DiscoveryProvidersConfig instance
      • setDiscoveryConfig

        public WanBatchPublisherConfig setDiscoveryConfig​(DiscoveryConfig discoveryConfig)
        Sets the DiscoveryConfig used by the discovery mechanism for this WAN publisher.
        Parameters:
        discoveryConfig - configuration to set
        Returns:
        this config
        Throws:
        java.lang.IllegalArgumentException - if discoveryProvidersConfig is null
      • getEndpoint

        public java.lang.String getEndpoint()
        Returns the WAN endpoint configuration qualifier. When using pre-3.12 network configuration, its value can be null and is not taken into account. With 3.12+ advanced network config, an EndpointConfig or ServerSocketEndpointConfig is looked up with protocol type WAN and this string as identifier. If such an EndpointConfig is found, its configuration is used when the WAN publisher opens a connection to the target cluster members.
        Returns:
        endpoint qualifier
        Since:
        3.12
        See Also:
        NetworkConfig, AdvancedNetworkConfig
      • setEndpoint

        public WanBatchPublisherConfig setEndpoint​(java.lang.String endpoint)
        Sets the WAN endpoint configuration qualifier. When using pre-3.12 network configuration, its value can be null and is not taken into account. With 3.12+ advanced network config, an EndpointConfig or ServerSocketEndpointConfig is looked up with protocol type WAN and this string as identifier. If such an EndpointConfig is found, its configuration is used when the WAN publisher opens a connection to the target cluster members.
        Parameters:
        endpoint - endpoint qualifier
        Returns:
        this configuration
        Since:
        3.12
        See Also:
        NetworkConfig, AdvancedNetworkConfig
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • getFactoryId

        public int getFactoryId()
        Description copied from interface: IdentifiedDataSerializable
        Returns DataSerializableFactory factory ID for this class.
        Returns:
        factory ID
      • getClassId

        public int getClassId()
        Description copied from interface: IdentifiedDataSerializable
        Returns type identifier for this class. It should be unique per DataSerializableFactory.
        Returns:
        type ID