services.hazelcast-all.0.70.0.7.source-code.hazelcast-full-example.yaml Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of hazelcast-all Show documentation
Show all versions of hazelcast-all Show documentation
Kubernetes Service Discovery for Hazelcast Discovery SPI
# Copyright (c) 2008-2019, Hazelcast, Inc. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# This is a full example hazelcast.yaml that includes all the
# configuration elements and attributes of a Hazelcast member.
#
# To use this, rename it to hazelcast.yaml and place it in
# the directory where you start your Hazelcast member.
#
# To learn how to configure Hazelcast, please see the Reference Manual
# at https://hazelcast.org/documentation/
hazelcast:
# You can use import to load different Hazelcast declarative configuration files you prepared.
# You can import as many YAML files as you want and hence compose your Hazelcast configuration
# out of those YAML files. If you want to use import, it should be placed at the top of your
# Hazelcast YAML file right after the "hazelcast" root node.
#
# Below is an example where the configuration files you want to include are located at your
# Hazelcast working directory:
# import:
# - your-configuration-file.yaml
#
# Below are examples showing a classpath or filesystem location:
# import:
# - file:///etc/hazelcast/your-configuration-file-1.yaml
# - classpath:your-configuration-file-2.yaml
#
# Below is an example showing property placeholders:
# import:
# - ${environment}-your-configuration-file.yaml
#
import:
- your-configuration-YAML-file
# The "config-replacers" allow to use variables (placeholders) within the configuration file and use an external
# class to retrieve correct values (replacements).
#
# It can be used for masking sensitive strings such as passwords for instance.
#
# Format of a variable is:
# $ PREFIX { STRING_TO_BE_REPLACED } e.g. $ENC{nnPgTqJCcCQ=:23000:B4y/nlp6M0t3q6YiKImW+w==}
#
# The PREFIX value depends on the replacer implementation (e.g. "ENC" is used for the EncryptionReplacer)
# The STRING_TO_BE_REPLACED is the value which is provided to replacer implementation.
#
config-replacers:
fail-if-value-missing: false
replacers:
- class-name: com.hazelcast.config.replacer.EncryptionReplacer
properties:
passwordFile: password.txt
passwordUserProperties: false
cipherAlgorithm: DES
keyLengthBits: 64
secretKeyAlgorithm: DES
secretKeyFactoryAlgorithm: PBKDF2WithHmacSHA1
#
# Specifies the name and password for a cluster group you create.
# Cluster groups allow you to create separate sub-clusters with different names.
# They are also referenced in the WAN Replication configuration.
# The group password is only used when the security is enabled (Enterprise edition feature).
group:
name: dev
password: dev-pass
#
# ===== HAZELCAST LICENSE CONFIGURATION =====
#
# If you have an Enterprise or Enterprise HD license, you can enter it here.
# You can also set your license key programmatically; please refer to
# http://docs.hazelcast.org/docs/latest/manual/html-single/index.html#setting-the-license-key
#
license-key: Your Hazelcast Enterprise or Enterprise HD License Key
#
# When Hazelcast instances are created, they are put in a global registry with their creation names.
# "instance-name" gives you the ability to get a specific Hazelcast instance from this registry
# by giving the instance's name.
#
instance-name: hzInstance1
#
# ===== HAZELCAST MANAGEMENT CENTER CONFIGURATION =====
#
# The value for the element "management-center" is the URL where you deploy the Management Center.
# It has three optional attributes:
# * enabled:
# Set to true to be able to use the Management Center. Its default value is false.
# * scripting-enabled:
# Set to true to allow scripting on the member, false to disallow.
# * update-interval:
# The time frequency (in seconds) for which Management Center will take information from Hazelcast cluster.
# Its default value is 3 seconds. Hazelcast's Open Source edition provides the Management Center with monitoring
# at most 2 members in your cluster. To use it for more members, you need to have either a Management Center,
# Hazelcast Enterprise or Hazelcast Enterprise HD license.
#
management-center:
enabled: true
scripting-enabled: false
update-interval: 2
url: http://localhost:8080/hazelcast-mancenter
#
# The "properties" mapping lets you add properties to some of the Hazelcast elements used to configure some of
# the Hazelcast modules.
# You can define the name and value of these properties.
# You can use "properties" for the following Hazelcast configuration elements:
# * discovery-strategy
# * map-store
# * queue-store
# * wan-replication
# * ssl
# * service
# * login-module
# * security-object
# * socket-interceptor
#
properties:
your-property: Value of the property
#
# ===== HAZELCAST WAN REPLICATION CONFIGURATION =====
#
# The WAN replication feature is available only in Hazelcast Enterprise.
# The configuration element's name is "wan-replication". It has two attributes:
# * name:
# Name of your WAN Replication. This name is referenced in IMap or ICache configuration when you add WAN
# Replication for these data structures (using the element "wan-replication-ref" in the configuration of
# IMap or ICache). Please see the "map" and "cache" configuration descriptions in this YAML.
#
# The "wan-replication" element has the following sub-elements:
# * "wan-publisher":
# Fully qualified class name of WAN Replication implementation implementing WanReplicationEndpoint.
# Hazelcast Enterprise comes with com.hazelcast.enterprise.wan.replication.WanBatchReplication:
# Waits until a batch size is reached or a delay time is passed.
# Please see the `batch.size and batch.max.delay.millis configuration descriptions below.
# * "wan-consumer":
# Config for processing WAN events received from a target cluster.
# You can configure certain behaviour when processing incoming WAN events
# or even configure your own implementation for a WAN consumer. A custom
# WAN consumer allows you to define custom processing logic and is usually
# used in combination with a custom WAN publisher.
# A custom consumer is optional and you may simply omit defining it which
# will cause the default processing logic to be used.
# It has the following sub-elements:
# - "class-name":
# Sets the fully qualified class name of the class implementing
# a custom WAN consumer (WanReplicationConsumer).
# If you don't define a class name, the default processing logic for
# incoming WAN events will be used.
# - "properties":
# Properties for the custom WAN consumer. These properties are
# accessible when initalizing the WAN consumer.
# - "persist-wan-replicated-data":
# When true, an incoming event over WAN replication can be persisted to a
# database for example, otherwise it will not be persisted. Default value
# is true.
# * "ack.type":
# Acknowledgment type for each target cluster when the events are replicated. You can set it to the following values:
# - ACK_ON_RECEIPT:
# Guarantees that events are received by the target cluster. It does not guarantee that
# the received event is actually applied, but it is faster.
# - ACK_ON_OPERATION_COMPLETE:
# Guarantees that the event is both received and applied by the target cluster.
# It is more time consuming, but it is the best way if you have strong consistency requirements.
# * "endpoints":
# Comma separated list of IP addresses of the target cluster members for which the WAN replication is implemented.
# * "batch.size":
# This element is valid when you set "class-name" (the WAN Replication implementation) to
# `WanBatchReplication`. It changes the maximum size of events that are sent to the target cluster in a
# single batch. The batch of events is not sent until this size is reached. Its default value is 500.
# * "batch.max.delay.millis":
# This element is valid when you set "class-name" (the WAN Replication implementation) to
# `WanBatchReplication`. If the number of events generated does not reach the "batch.size", they are sent to the
# target cluster after a certain amount of time is passed. You can set this time in milliseconds using this
# element. Its default value is 1000 milliseconds.
# * "response.timeout.millis":
# After a replication event is sent to the target cluster, the source member waits for a confirmation
# that says the event has reached the target. If confirmation is not received for a period of
# `response.timeout.millis`, the event is resent to the target cluster. The default value is 60000 milliseconds.
# * "queue-capacity":
# Size of the queue of events. Its default value is 10000. If you exceed this queue size, then the
# oldest, not yet replicated updates might get lost. Therefore, if you have a large rate of
# put/update/remove operations, you should increase "queue-capacity".
# * "queue-full-behavior":
# Policy to be applied when WAN Replication event queues are full. You can set it to the following values:
# - DISCARD_AFTER_MUTATION:
# The new WAN events generated are dropped and not replicated to the target cluster.
# - THROW_EXCEPTION:
# The WAN queue size is checked before each supported mutating operation. If one of the queues of the target
# cluster is full, WANReplicationQueueFullException is thrown and the operation is not allowed.
# * "initial-publisher-state":
# Defines the initial state in which a WAN publisher is started.
# - REPLICATING (default):
# State where both enqueuing new events is allowed, enqueued events are replicated to the target cluster
# and WAN sync is enabled.
# - PAUSED:
# State where new events are enqueued but they not are dequeued. Some events which have been dequeued before
# the state was switched may still be replicated to the target cluster but further events will not be
# replicated. WAN sync is enabled.
# - STOPPED:
# State where neither new events are enqueued nor dequeued. As with the PAUSED state, some events might
# still be replicated after the publisher has switched to this state. WAN sync is enabled.
# * "wan-sync":
# Configuration for the WAN sync mechanism. It has the following sub-elements:
# - "consistency-check-strategy":
# Sets the strategy for checking consistency of data between source and
# target cluster. Any inconsistency will not be reconciled, it will be
# merely reported via the usual mechanisms (e.g. statistics, diagnostics).
# The user must initiate WAN sync to reconcile there differences. For the
# check procedure to work properly, the target cluster should support the
# chosen strategy.
# Default value is NONE, which means the check is disabled.
# * "aws":
# Set its "enabled" attribute to true for discovery within Amazon EC2. It has the following sub-elements:
# - "access-key":
# Access key of your account on EC2.
# - "secret-key":
# Secret key of your account on EC2.
# - "iam-role":
# IAM role that binds with your instance.
# - "region":
# The region where your Hazelcast members run. Default value is us-east-1.
# It needs to be specified if the region is other than the default one.
# - "host-header":
# The URL that is the entry point for a web service. It is optional.
# - "security-group-name":
# Name of the security group you specified at the EC2 management console.
# It is used to narrow the Hazelcast members to be within this group. It is optional.
# - "tag-key":
# To narrow the members in the cloud down to only Hazelcast members, you can set
# this to the one you specified in the EC2 console. It is optional.
# - "tag-value":
# To narrow the members in the cloud down to only Hazelcast members, you can set
# this to the one you specified in the EC2 console. It is optional.
# * "discovery-strategies":
# Set its "enabled" attribute to true for discovery in various cloud infrastructures.
# You can define multiple discovery strategies using the "discovery-strategy" sub-element and its properties.
# Please refer to
# http://docs.hazelcast.org/docs/latest/manual/html-single/index.html#discovering-cluster-members
# to see the properties you can use.
# The following is an example for EC2 cloud.
# "discovery-strategies"
# discovery-strategy:
# - enabled: true
# class: com.hazelcast.aws.AwsDiscoveryStrategy
# properties:
# access-key: test-access-key
# secret-key: test-secret-key
# region: test-region
# iam-role: test-iam-role
# host-header: ec2.test-host-header
# security-group-name: test-security-group-name
# tag-key: test-tag-key
# tag-value: test-tag-value
# connection-timeout-seconds: 10
# hz-port: 5702
#
wan-replication:
my-wan-cluster-batch:
wan-publisher:
nycPublisherId:
group-name: nyc
class-name: com.hazelcast.enterprise.wan.replication.WanBatchReplication
queue-capacity: 15000
queue-full-behavior: DISCARD_AFTER_MUTATION
initial-publisher-state: REPLICATING
wan-sync:
consistency-check-strategy: NONE
properties:
endpoints: 10.3.5.1:5701,10.3.5.2:5701
batch.size: 1000
batch.max.delay.millis: 2000
response.timeout.millis: 60000
ack.type: ACK_ON_OPERATION_COMPLETE
snapshot.enabled: false
group.password: nyc-pass
# aws:
# enabled: false
# access-key: my-access-key
# secret-key: my-secret-key
# iam-role: dummy
# region: us-west-1
# host-header: ec2.amazonaws.com
# security-group-name: hazelcast-sg
# tag-key: type
# tag-value: hz-nodes
# discovery-strategies:
# - enabled: true
# class: com.hazelcast.jclouds.JCloudsDiscoveryStrategy
# properties:
# - provider: google-compute-engine
# - identity: GCE_IDENTITY
# - credential: GCE_CREDENTIAL
wan-consumer:
# class-name: com.myCompany.CustomWanConsumer
# properties:
# prop1: prop1-value
# prop2: prop2-value
persist-wan-replicated-data: true
#
# ===== HAZELCAST NETWORK CONFIGURATION =====
#
# The configuration to build your Hazelcast's network includes configuration for port, interface, discovery
# mechanism, SSL, encryption, etc. The configuration element's name is "network".
# It has the following sub-elements:
# * "public address":
# This optional element overrides the public address of a member. It is useful when
# you have a private cloud. Normally, a member selects its socket address as its public address. But behind a NAT,
# two members may not be able to see/access each other. In this case, you can set their public addresses to their
# defined addresses on NAT. The value should be given in the format "host IP address:port number".
# * "port":
# Specifies the ports that Hazelcast will use to communicate between cluster members. It is optional and
# its default value is 5701. It has the following attributes:
# - port-count:
# By default, Hazelcast will try 100 ports to bind (i.e. the ports between 5701 and 5801). You can
# change the port count in such cases as having large instances on a single machine or you are
# willing to have only a few ports assigned. port-count is optional and its default value is 100.
# - auto-increment:
# By default, Hazelcast tries to find a port by automatically incrementing the port numbers. If you
# don't want this (for example, you want to use a specific port), set auto-increment to false. If it is
# set to false, the port-count attribute is ignored. auto-increment is optional and its default value is true.
# Examples:
# The example below looks for ports between 5701 and 5721, incrementing the ports starting from 5701.
# port:
# port-count: 20
# port: 5701
# The example below forces Hazelcast to use only the port 5701.
# port:
# auto-increment: false
# port: 5701
# * "outbound-ports":
# By default, Hazelcast lets the system pick up an ephemeral port during socket bind operation. But security
# policies/firewalls may require you to restrict outbound ports to be used by Hazelcast-enabled applications.
# You can specify these ports under the element "outbound-ports". You can give a single
# port number, comma separated multiple ports or port ranges. See the example below.
# outbound-ports:
# - 33000-35000
# - 37000,37001,37002,37003
# - 38000,38500-38600
# * "reuse-address":
# If you set this to true, Hazelcast will use the same port when you restart a member right after you
# shut it down. It is optional and its default value is false.
# * "join":
# This configuration lets you choose a discovery mechanism that Hazelcast will use to form a cluster.
# Hazelcast can find members by multicast, TCP/IP lists and by various discovery mechanisms provided by different cloud APIs.
# The following are the elements of "join":
# - "multicast":
# Set its "enabled" attribute to true for discovery by multicast. It has another attribute
# ("loopbackModeEnabled") which enables or disables the loopback mode in the multicast discovery
# mechanism.
# It has the following sub-elements to fine tune the multicast discovery.
# - "multicast-group":
# Specifies the multicast group IP address when you want to create clusters within
# the same network. Its default value is 224.2.2.3.
# - "multicast-port":
# Specifies the multicast socket port that the Hazelcast member listens to and
# sends discovery messages through. Its default value is 54327.
# - "multicast-time-to-live":
# Time-to-live value for multicast packets sent out to control the scope of multicasts.
# - "multicast-timeout-seconds":
# Only when the members are starting up, this timeout (in seconds) specifies the
# period during which a member waits for a multicast response from another node.
# For example, if you set it as 60 seconds, each node will wait for 60 seconds until a
# leader node is selected. Its default value is 2 seconds.
# - "trusted-interfaces":
# Includes IP addresses of trusted members. When a node wants to join to the cluster,
# its join request will be rejected if it is not a trusted member.
# You can give an IP addresses range using the wildcard (*) on the last digit of
# IP address (e.g. 192.168.1.* or 192.168.1.100-110).
# - "tcp-ip":
# It has the following sub-elements.
# - "enabled":
# Specifies whether the TCP/IP discovery is enabled or not. Default value is false.
# - "connection-timeout-seconds":
# The maximum amount of time Hazelcast is going to try to connect to a well known member
# before giving up. Setting it to a too low value could mean that a member is not able
# to connect to a cluster. Setting it to a too high value means that member startup could
# slow down because of longer timeouts (e.g. when a well known member is not up). Increasing
# this value is recommended if you have many IPs listed and the members cannot properly
# build up the cluster. Its default value is 5.
# - "required-member":
# IP address of the required member. Cluster will only be formed if the member with this
# IP address is found.
# - "member":
# IP address(es) of one or more well known members. Once members are connected to these
# well known ones, all member addresses will be communicated with each other. You can
# also give comma separated IP addresses using the "members" element or list the members
# under the "member-list" sequence.
# - "members":
# Comma separated IP addresses of one or more well known members.
# - "member-list":
# Sequence to list IP address(es) of one or more well known members.
# - "interface":
# IP address(es) of one or more well known members.
# - "aws":
# Set its "enabled" sub-element to true for discovery within Amazon EC2.
# Please refer to https://github.com/hazelcast/hazelcast-aws/#configuration for the configuration details.
# - "gcp":
# Set its "enabled" sub-element to true for discovery within the Google Cloud Platform.
# Please refer to https://github.com/hazelcast/hazelcast-gcp/#configuration for the configuration details.
# - "azure":
# Set its "enabled" sub-element to true for discovery within Microsoft Azure.
# Please refer to https://github.com/hazelcast/hazelcast-azure/#configuring-at-hazelcast-side for
# the configuration details.
# - "kubernetes":
# Set its "enabled" sub-element to true for discovery in the Kubernetes environment.
# Please refer to https://github.com/hazelcast/hazelcast-kubernetes#hazelcast-configuration for
# the configuration details.
# - "eureka":
# Set its "enabled" sub-element to true for discovery with using Eureka Service Registry.
# Please refer to https://github.com/hazelcast/hazelcast-eureka#hazelcast-configuration for
# the configuration details.
# - "discovery-strategies":
# Set its "enabled" attribute to true for discovery in various cloud infrastructures. You also need to set the
# value of "hazelcast.discovery.enabled" property to true. See the description of the "properties" element
# to learn how to do this.
# You can define multiple discovery strategies and its properties. Please refer to
# http://docs.hazelcast.org/docs/latest/manual/html-single/index.html#discovering-cluster-members
# to see the properties you can use.
# The following is an example for EC2 cloud.
# discovery-strategies:
# - enabled: true
# class: com.hazelcast.jclouds.JCloudsDiscoveryStrategy>
# properties:
# provider: aws-ec2
# identity: AWS_IDENTITY
# credential: AWS_CREDENTIAL
# * "interfaces":
# Specifies which network interfaces Hazelcast should use. You need to set its "enabled" attribute
# to true to be able to use your defined interfaces. You can define multiple interfaces. By default, it is disabled.
# * "ssl":
# Lets you configure SSL using the SSL context factory. This feature is available only in Hazelcast
# Enterprise. To be able to use it, encryption should NOT be enabled and you should first implement
# your SSLContextFactory class. Its configuration contains the factory class and SSL properties.
# By default, it is disabled. The following is an example:
# ssl:
# enabled: true
# factory-class-name: com.hazelcast.nio.ssl.BasicSSLContextFactory
# properties:
# keyStore: keyStore
# keyStorePassword: keyStorePassword
# keyManagerAlgorithm: SunX509
# trustManagerAlgorithm: SunX509
# protocol: TLS
# mutualAuthentication: REQUIRED
# * "socket-interceptor":
# Lets you add custom hooks to join and perform connection procedures (like identity checking using
# Kerberos, etc.). This feature is available only in Hazelcast Enterprise. To be able to use it, you
# should first implement the MemberSocketInterceptor (for members joining to a cluster) or
# SocketInterceptor (for clients connecting to a member) class. Its configuration contains the class you
# implemented and socket interceptor properties. By default, it is disabled. The following is an example:
# socket-interceptor:
# enabled: true
# class-name: com.hazelcast.examples.MySocketInterceptor
# properties:
# kerberos-host: kerb-host-name
# kerberos-config-file: kerb.conf
# * "symmetric-encryption":
# Lets you encrypt the entire socket level communication among all Hazelcast members.
# This feature is available only in Hazelcast Enterprise. Its configuration contains the encryption
# properties and the same configuration must be placed to all members. By default, it is disabled.
# The following is an example:
# symmetric-encryption:
# enabled: true
# algorithm: PBEWithMD5AndDES
# salt: thesalt
# password: thepass
# iteration-count: 19
# * "member-address-provider":
# IMPORTANT
# This configuration is not intended to provide addresses of other cluster members with
# which the Hazelcast instance will form a cluster. This is an SPI for advanced use in
# cases where the DefaultAddressPicker does not pick suitable addresses to bind to
# and publish to other cluster members. For instance, this could allow easier
# deployment in some cases when running on Docker, AWS or other cloud environments.
# That said, if you are just starting with Hazelcast, you will probably want to
# set the member addresses by using the tcp-ip or multicast configuration
# or adding a discovery strategy.
# Member address provider allows to plug in own strategy to customize:
# 1. What address Hazelcast will bind to
# 2. What address Hazelcast will advertise to other members on which they can bind to
# In most environments you don't need to customize this and the default strategy will work just
# fine. However in some cloud environments the default strategy does not make the right choice and the
# member address provider delegates the process of address picking to external code.
# It has the following sub-elements:
# - enabled:
# Specifies whether the member address provider SPI is enabled or not. Its default value is false.
# - "class-name":
# The name of the class implementing the com.hazelcast.spi.MemberAddressProvider interface.
# - "properties":
# The properties that will be provided when constructing the provided MemberAddressProvider. Hazelcast will
# first try instantiating the provided class by invoking a constructor accepting a single
# java.util.Properties instance. In the case where there is no such constructor and there are also
# no properties defined by this configuration, Hazelcast will exceptionally try to use the no-arg
# constructor.
# * "failure-detector":
# A failure detector is responsible to determine if a member in the cluster is unreachable or crashed.
# Please refer to https://docs.hazelcast.org/docs/latest/manual/html-single/index.html#failure-detector-configuration
# for the failure detectors implemented by Hazelcast.
#
# This element has the following sub-element:
# * "icmp":
# ICMP can be used in addition to the other detectors. It operates at layer 3 and detects network
# and hardware issues more quickly.
#
# It has the following sub-elements:
# * "timeout-milliseconds":
# Timeout in Milliseconds before declaring a failed ping.
# * "fail-fast-on-startup":
# Cluster Member will fail to start if it is unable to action an ICMP ping command when ICMP is enabled.
# Failure is usually due to OS level restrictions.
# * "interval-milliseconds":
# Time in milliseconds between each ICMP ping.
# * "max-attempts":
# Maximum number of consecutive failed attempts before declaring a member suspect.
# * "parallel-mode":
# Run ICMP detection in parallel with the Heartbeat failure detector.
# * "ttl":
# Maximum number of times the IP Datagram (ping) can be forwarded, in most cases
# all Hazelcast cluster members would be within one network switch/router therefore
# default of 0 is usually sufficient.
#
network:
public-address: 11.22.33.44:5555
port:
auto-increment: true
port-count: 100
port: 5701
outbound-ports:
- 34500
reuse-address: false
join:
multicast:
enabled: false
multicast-group: 224.2.2.3
multicast-port: 54327
tcp-ip:
enabled: false
interface: 127.0.0.1
required-member: 10.0.0.1
member-list:
- 10.0.0.2
- 10.0.0.3
aws:
enabled: false
access-key: my-access-key
secret-key: my-secret-key
iam-role: dummy
region: us-west-1
host-header: ec2.amazonaws.com
security-group-name: hazelcast-sg
tag-key: type
tag-value: hz-nodes
gcp:
enabled: false
zones: us-east1-b,us-east1-c
azure:
enabled: false
client-id: CLIENT_ID
client-secret: CLIENT_SECRET
tenant-id: TENANT_ID
subscription-id: SUB_ID
cluster-id: HZLCAST001
group-name: GROUP-NAME
kubernetes:
enabled: false
namespace: MY-KUBERNETES-NAMESPACE
service-name: MY-SERVICE-NAME
service-label-name: MY-SERVICE-LABEL-NAME
service-label-value: MY-SERVICE-LABEL-VALUE
eureka:
enabled: false
self-registration: true
namespace: hazelcast
discovery-strategies:
node-filter:
class: com.yourpackage.NodeFilter
discovery-strategies:
- enabled: true
class: com.hazelcast.jclouds.JCloudsDiscoveryStrategy
properties:
provider: google-compute-engine
identity: GCE_IDENTITY
credential: GCE_CREDENTIAL
interfaces:
enabled: true
interfaces:
- 10.10.1.*
ssl:
enabled: false
factory-class-name: com.hazelcast.nio.ssl.BasicSSLContextFactory
properties:
protocol: TLS
mutualAuthentication: REQUIRED
keyStore: /opt/hazelcast.keystore
keyStorePassword: secret.97531
keyStoreType: JKS
trustStore: /opt/hazelcast.truststore
trustStorePassword: changeit
trustStoreType: JKS
socket-interceptor:
enabled: false
symmetric-encryption:
enabled: false
algorithm: PBEWithMD5AndDES
password: ...
salt: ...
iteration-count: 7
member-address-provider:
enabled: false
class-name: com.hazelcast.MemberAddressProviderImpl
properties:
prop1: prop1-value
prop2: prop2-value
failure-detector:
icmp:
enabled: true
timeout-milliseconds: 1000
fail-fast-on-startup: true
interval-milliseconds: 1000
max-attempts: 2
parallel-mode: true
ttl: 255
#
# ===== HAZELCAST REST API CONFIGURATION =====
#
# Configures Hazelcast HTTP REST API.
# The "rest-api" element has a global enabled switch, which controls the entrypoint to HTTP REST API. If it's disabled
# then no text protocol is available.
# Once the global switch is enabled there is an optional second level of control - REST endpoint groups. They are configured
# by element "endpoint-group".
# Groups and their defaults:
# * CLUSTER_READ - enabled
# Group of operations for retrieving cluster state and its version.
# * CLUSTER_WRITE - disabled
# Operations which changes cluster or node state or their configurations.
# * HEALTH_CHECK - disabled
# Group of endpoints for HTTP health checking.
# * HOT_RESTART - disabled
# Group of HTTP REST APIs related to Hot Restart feature.
# * WAN - disabled
# Group of HTTP REST APIs related to WAN Replication feature.
# * DATA - disabled
# Group of HTTP REST APIs for data manipulation in the cluster (e.g. IMap and IQueue operations).
#
rest-api:
enabled: false
endpoint-groups:
CLUSTER_READ:
enabled: true
CLUSTER_WRITE:
enabled: false
HEALTH_CHECK:
enabled: false
HOT_RESTART:
enabled: false
WAN:
enabled: false
DATA:
enabled: false
#
# ===== HAZELCAST MEMCACHE PROTOCOL CONFIGURATION =====
#
# Allows to configure Memcache text protocol support in Hazelcast.
#
memcache-protocol:
enabled: false
#
# ===== PARTITION GROUPING CONFIGURATION =====
#
# Configuration element's name is "partition-group". You can enable it and specify the type using
# the "enabled" and "group-type" attributes. For CUSTOM type, you can define groups using its
# "member-group" and "interface" sub-elements. You can group the members with one of the following types:
# * HOST_AWARE:
# Members sharing the same network interface are grouped together. All members on the same host will be a
# single partition group.
# * CUSTOM:
# You can add different and multiple members to a group.
# * PER_MEMBER:
# Each member is a group of its own and primary/backup partitions are distributed
# randomly (not on the same physical member).
# * ZONE_AWARE:
# Backups are created in the other zones. Each zone will be accepted as one partition group.
# It can be used when you make use of Hazelcast's jclouds or Azure discovery service plugins.
# * SPI:
# You can provide your own partition group implementation using the SPI grouping type. Please see
# Partition Group Configuration section in Hazelcast Reference Manual.
#
partition-group:
enabled: true
group-type: CUSTOM
member-group:
-
- 10.10.0.*
- 10.10.3.*
- 10.10.5.*
-
- 10.10.10.10-100
- 10.10.1.*
- 10.10.2.*
#
# ===== HAZELCAST EXECUTOR SERVICE CONFIGURATION =====
#
# Configuration element's name is "executor-service". It has the optional attribute "name" with which you
# can specify the name of your executor service. Its default value is "default".
# It has the following sub-elements:
# * "statistics-enabled":
# When you enable it, you can retrieve executor service statistics such as pending operations count,
# started operations count, completed operations count, and cancelled operations count. Its default
# value is true.
# * "pool-size":
# The number of executor threads per member for the executor. Its default value is 8.
# * "queue-capacity":
# Task queue capacity of the executor. Its default value is 0, meaning Integer.MAX_VALUE.
# * "quorum-ref":
# Adds the Split Brain Protection for this data-structure which you configure using the "quorum" element. You should set the
# "quorum-ref"'s value
# as the "quorum"'s name.
#
executor-service:
default:
statistics-enabled: true
pool-size: 16
queue-capacity: 0
quorum-ref: quorumRuleWithThreeNodes
#
# ===== HAZELCAST DURABLE EXECUTOR SERVICE CONFIGURATION =====
#
# Configuration element's name is "durable-executor-service". It has the optional attribute "name" with which you
# can specify the name of your durable executor service. Its default value is "default".
# It has the following sub-elements:
# * "pool-size":
# The number of executor threads per member for the executor. Its default value is 16.
# * "durability":
# Durability of the executor. The default value is 1.
# * "capacity":
# Capacity of the executor task per partition. The default value is 100.
# * "quorum-ref":
# Adds the Split Brain Protection for this data-structure which you configure using the "quorum" element. You should set
# the "quorum-ref"'s value
# as the "quorum"'s name.
#
durable-executor-service:
default:
pool-size: 16
durability: 1
capacity: 100
quorum-ref: quorumRuleWithThreeNodes
#
# ===== HAZELCAST SCHEDULED EXECUTOR SERVICE CONFIGURATION =====
#
# Configuration element's name is "scheduled-executor-service". It has the optional attribute "name" with which you
# can specify the name of your scheduled executor service. Its default value is "default".
# It has the following sub-elements:
# * "pool-size":
# The number of executor threads per member for the executor. Its default value is 16.
# * "durability":
# Durability of the scheduled executor. The default value is 1.
# * "capacity":
# Capacity of the scheduled executor. The default value is 100.
# This is the maximum number of tasks for a given scheduled executor on a particular partition.
# * "quorum-ref":
# Adds the Split Brain Protection for this data-structure which you configure using the "quorum" element. You should set
# the "quorum-ref"'s value as the "quorum"'s name.
# * "merge-policy":
# The default policy is PutIfAbsentMergePolicy with a batch size of 100.
# This is the policy used when merging entries from sub-clusters (after split-brain recovery).
#
scheduled-executor-service:
default:
pool-size: 16
durability: 1
capacity: 100
quorum-ref: quorumRuleWithThreeNodes
merge-policy:
batch-size: 100
class-name: PutIfAbsentMergePolicy
#
# ===== HAZELCAST CARDINALITY ESTIMATOR SERVICE CONFIGURATION =====
#
# Configuration element's name is "cardinality-estimator". It has the optional attribute "name" with which you
# can specify the name of your estimator. Its default value is "default".
# It has the following sub-elements:
# * "backup-count":
# Number of synchronous backups. For example, if 1 is set as the backup-count,
# then the cardinality estimation will be copied to one other JVM for
# fail-safety. Valid numbers are 0 (no backup), 1, 2 ... 6.
# * "async-backup-count":
# Number of asynchronous backups. For example, if 1 is set as the backup-count,
# then the cardinality estimation will be copied to one other JVM for
# fail-safety. Valid numbers are 0 (no backup), 1, 2 ... 6.
# * "quorum-ref":
# Adds the Split Brain Protection for this data-structure which you configure using the "quorum" element. You should set
# the "quorum-ref"'s value as the "quorum"'s name.
# * "merge-policy":
# The default policy is `com.hazelcast.spi.merge.HyperLogLogMergePolicy` with a batch size of 100.
# This is the policy used when merging estimators from sub-clusters (after split-brain recovery).
#
cardinality-estimator:
default:
backup-count: 1
async-backup-count: 0
quorum-ref: quorumRuleWithThreeNodes
merge-policy:
batch-size: 102
class-name: PutIfAbsentMergePolicy
#
# ===== HAZELCAST QUEUE CONFIGURATION =====
#
# Configuration element's name is "queue". It has the optional attribute "name" with which you
# can specify the name of your queue. Its default value is "default".
# It has the following elements:
# * "statistics-enabled":
# When you enable it, you can retrieve queue statistics. Its default value is true.
# * "max-size":
# Maximum size of the queue. When a JVM's local queue size reaches the maximum, all put/offer operations
# will be blocked until the queue size of the JVM goes below this maximum. Its default value is 0,
# meaning Integer.MAX_VALUE.
# * "backup-count":
# Number of synchronous backups. Queue is a non-partitioned data structure, so all entries of a Queue
# resides in one partition. When this parameter is '1', it means there will be 1 backup of that Queue in
# another member in the cluster. When it is '2', 2 members will have the backup. 0 means there will be no
# backups. Its default value is 1.
# * "async-backup-count":
# Number of asynchronous backups. Its default value is 0.
# * "empty-queue-ttl":
# Used to purge unused or empty queues. If you define a value (time in seconds) for this element, then
# your queue will be destroyed if it stays empty or unused for that time.
# * "item-listeners":
# Adds listeners (listener classes) for the queue items using its sub-element "item-listener". You can
# also set its attribute "include-value" to true if you want the item event to contain the item values,
# and you can set its attribute "local" to true if you want to listen to the items on the local member.
# * "queue-store":
# Includes configuration elements and attributes for your queue store implementation. When you want to
# load/store the distributed queue items from/to a persistent datastore, first implement Hazelcast's
# QueueStore interface and then configure it using this element. It includes your implemented class name
# and the following property configurations:
# - binary:
# If you do not reach the queue store from an external application, you might prefer to insert the items
# in binary form. To do so, set this property to true and skip the deserialization step, which is a
# performance optimization. Its default value is false.
# - memory-limit:
# Number of items after which Hazelcast will store items only to datastore. For example,
# if the memory limit is 1000, then the 1001st item will be put only to datastore.
# This feature is useful when you want to avoid out-of-memory conditions. If you want to
# always use memory, you can set it to Integer.MAX_VALUE. Its default value is 1000.
# - bulk-load:
# Size of the bulks loaded from QueueStore when the queue is initialized. Its default
# value is 250.
# * "quorum-ref":
# Adds the Split Brain Protection for this data-structure which you configure using the "quorum" element. You should set
# the "quorum-ref"'s value as the "quorum"'s name.
#
queue:
default:
statistics-enabled: true
max-size: 0
backup-count: 1
async-backup-count: 0
empty-queue-ttl: -1
item-listeners:
- include-value: true
class-name: com.hazelcast.examples.ItemListener
queue-store:
class-name: com.hazelcast.QueueStoreImpl
properties:
binary: false
memory-limit: 1000
bulk-load: 500
quorum-ref: quorumRuleWithThreeNodes
merge-policy:
batch-size: 100
class-name: PutIfAbsentMergePolicy
#
# ===== HAZELCAST MAP CONFIGURATION =====
#
# Configuration element's name is "map". It has the optional attribute "name" with which you
# can specify the name of your map. Its default value is "default".
# It has the following sub-elements:
# * "in-memory-format":
# Specifies in which format data will be stored in your map. Available values are as follows:
# - BINARY:
# Data will be stored in serialized binary format. It is the default option.
# - OBJECT:
# Data will be stored in deserialized form.
# - NATIVE:
# Data will be stored in the map that uses Hazelcast's High-Density Memory Store feature. This
# option is available only in Hazelcast Enterprise HD.
# * "statistics-enabled":
# When you enable it, you can retrieve map entry statistics such as creation time, expiration time,
# number of hits, key, value, etc. Its default value is true.
# * "optimize-queries":
# It is deprecated as of Hazelcast 3.6. Use the "cache-deserialized-values" element instead. When
# "optimize-queries" and "cache-deserialized-values" are used at the same time, Hazelcast will do its
# best to detect possible conflicts. Conflict detection is done on best-effort basis and you should not
# rely on it. If true, it increases the speed of query processes in the map. It only works when
# "in-memory-format" is set to BINARY and performs a pre-caching on the entries queried. Its default
# value is false.
# * "metadata-policy"
# Metadata policy for this map. Hazelcast may process objects of supported types ahead of time to
# create additional metadata about them. This metadata then is used to make querying and indexing faster.
# Metadata creation may decrease put throughput.
# Valid values are:
# CREATE_ON_UPDATE (default): Objects of supported types are pre-processed when they are created and updated.
# OFF: No metadata is created.
# * "cache-deserialized-values":
# Controls caching of deserialized values. Caching makes the query evaluation faster, but it costs memory.
# Available values are as follows:
# - NEVER: Deserialized values will never be cached.
# - INDEX-ONLY: Deserialized values will be cached only when they are inserted into an index.
# - ALWAYS: Deserialized values will always be cached.
# * "backup-count":
# Count of synchronous backups. When this count is 1, a map entry will have its backup on one other node in
# the cluster. If you set it to 2, then a map entry will have its backup on two other nodes. You can set it
# to 0 if you do not want your entries to be backed up. The maximum value for the backup count is 6.
# Its default value is 1.
# * "async-backup-count":
# Number of asynchronous backups. Unlike the synchronous backup process, asynchronous backup process does not
# block the map operations. Its default value is 0, meaning there will be no asynchronous backups.
# * "time-to-live-seconds":
# Maximum time in seconds for each entry to stay in the map. If it is not 0, entries that are older than
# this time and not updated for this time are evicted automatically. Valid values are integers between 0 and
# Integer.MAX VALUE. Its default value is 0, which means infinite. If it is not 0, entries are evicted regardless
# of the set eviction-policy.
# * "max-idle-seconds":
# Maximum time in seconds for each entry to stay idle in the map. Entries that are idle for more than
# this time are evicted automatically. An entry is idle if no get, put, EntryProcessor.process or
# containsKey is called. Valid values are integers between 0 and Integer.MAX VALUE. Its default value
# is 0, which means infinite.
# * "eviction-policy":
# Eviction policy configuration. Its default values is NONE. Available values are as follows:
# - NONE:
# No items will be evicted and the property max-size will be ignored. You still
# can combine it with time-to-live-seconds and max-idle-seconds.
# - LRU: Least Recently Used.
# - LFU: Least Frequently Used.
# * "map-eviction-policy-class-name":
# Internal eviction algorithm finds the most appropriate entry to evict from the map by using this policy.
# * "max-size":
# Maximum size of the map depending on the given policy specified by its "policy" attribute. When maximum
# size is reached, the map is evicted based on the policy defined. Valid values are integers between 0 and
# Integer.MAX VALUE. Its default value is 0 and its default policy attribute is "PER_NODE". If you want
# max-size to work, set the "eviction-policy" to a value other than NONE. Available max-size policies are
# as follows:
# - PER_NODE:
# Maximum number of map entries in each cluster member. You cannot set the max-size to a value lower
# than the partition count (which is 271 by default).
# - PER_PARTITION:
# Maximum number of map entries within each partition.
# - USED_HEAP_SIZE:
# Maximum used heap size in megabytes per map for each Hazelcast instance. It does not work when
# "in-memory-format" is set to OBJECT.
# - USED_HEAP_PERCENTAGE:
# Maximum used heap size percentage per map for each Hazelcast instance. If, for example, JVM is
# configured to have 1000 MB and this value is 10, then the map entries will be evicted when used heap size
# exceeds 100 MB. It does not work when "in-memory-format" is set to OBJECT.
# - FREE_HEAP_SIZE:
# Minimum free heap size in megabytes for each Hazelcast instance.
# - FREE_HEAP_PERCENTAGE:
# Minimum free heap size percentage for each Hazelcast instance. If, for example, JVM is configured to
# have 1000 MB and this value is 10, then the map entries will be evicted when free heap size is below 100 MB.
# - USED_NATIVE_MEMORY_SIZE:
# Maximum used native memory size in megabytes per map for each Hazelcast instance. It is available only in
# Hazelcast Enterprise HD.
# - USED_NATIVE_MEMORY_PERCENTAGE:
# Maximum used native memory size percentage per map for each Hazelcast instance. It is available only in
# Hazelcast Enterprise HD.
# - FREE_NATIVE_MEMORY_SIZE:
# Minimum free native memory size in megabytes for each Hazelcast instance. It is available only in
# Hazelcast Enterprise HD.
# - FREE_NATIVE_MEMORY_PERCENTAGE:
# Minimum free native memory size percentage for each Hazelcast instance. It is available only in
# Hazelcast Enterprise HD.
# * "eviction-percentage":
# When "max-size" is reached, the specified percentage of the map will be evicted. For example, if set to 25,
# 25% of the entries will be evicted. Valid values are integers between 0 and 100. Its default value is 25.
# * "min-eviction-check-millis":
# Specifies the frequency of the eviction process, i.e. minimum time in milliseconds which should elapse before
# checking whether a partition of the map is evictable or not. Its default value is 100. Setting it to 0 (zero)
# makes the eviction process run for every put operation.
# * "merge-policy":
# Policy that specifies how the map entries in the small cluster will merge with the bigger cluster after a
# split-brain syndrome. Its default values is "com.hazelcast.map.merge.PutIfAbsentMapMergePolicy". Available
# built-in policies are as follows:
# - com.hazelcast.map.merge.PassThroughMergePolicy:
# Entry will be added if there is no existing entry for the key.
# - com.hazelcast.map.merge.PutIfAbsentMapMergePolicy:
# Entry will be added if the merging entry does not exist in the cluster.
# - com.hazelcast.map.merge.HigherHitsMapMergePolicy:
# Entry with the higher number of hits wins.
# - com.hazelcast.map.merge.LatestUpdateMapMergePolicy:
# Entry with the latest update wins.
# * "read-backup-data":
# Used to enable reading from local backup map entries. Its default value is false. It can be used if there is
# at least 1 sync or async backup.
# * "hot-restart":
# Used to enable Hazelcast's Hot Restart Persistence feature for the map. It is available only in Hazelcast
# Enterprise HD. Set its "enabled" to true to enable the feature. By default, it is disabled. It has the following
# sub-element.
# - "fsync":
# Set to true if the writing to disk should be followed by an fsync() system call. Its default value is false.
# * "map-store":
# Configuration options when you want to load/store the map entries from/to a persistent data store such as a
# relational database. Before configuring "map-store", you need to implement Hazelcast's MapStore or MapLoader
# interfaces.
# It has the following attributes:
# - enabled:
# Set to true to enable the map store functionality for your map. Its default value is true.
# - initial-mode:
# Sets the initial entry loading mode. Available values are as follows:
# - LAZY: The loading is asynchronous. It is the default mode.
# - EAGER: The loading is blocked until all partitions are loaded.
#
# It has the following sub-elements:
# - "class-name":
# The name of your class implementing MapLoader and/or MapStore interface.
# - "write-delay-seconds":
# Number of seconds to delay the storing of entries. If the value is 0, then it is write-through.
# Otherwise, it is write-behind so updates will be stored after this period. Its default value is 0.
# - "write-batch-size":
# Used to create batches when writing to map store. In default mode, all map entries will try
# to be written in one go. To create batches, the minimum meaningful value is 2. For values smaller than 2,
# it works as in default mode. Its default value is 1.
# - "write-coalescing":
# It is meaningful if you are using write behind in MapStore. When it is set to true,
# only the latest store operation on a key during the write-delay-seconds will be
# reflected to MapStore. Its default value is true.
# - "properties":
# While you are implementing MapStore or MapLoader you can define specific properties to be configured.
# It can be your store's URL, credentials, etc. Please see the example map configuration snippet below.
# * "near-cache":
# Configuration options when you want to use a Near Cache for your map.
# It has the following attributes:
# - name: You can give a name for your Near Cache. It is optional and its default value is "default".
#
# It has the following sub-elements:
# - "max-size":
# Maximum size of the Near Cache. When this is reached, Near Cache is evicted based on the policy defined.
# Any integer between 0 and Integer.MAX_VALUE. 0 means Integer.MAX_VALUE. Its default value is 0.
# - "time-to-live-seconds":
# Maximum number of seconds for each entry to stay in the Near Cache. Entries that are older than this
# period are automatically evicted from the Near Cache. Any integer between 0 and Integer.MAX_VALUE.
# 0 means infinite. Its default value is 0.
# - "max-idle-seconds":
# Maximum number of seconds each entry can stay in the Near Cache as untouched (not read). Entries that
# are not read more than this period are removed from the Near Cache. Any integer between 0 and
# Integer.MAX_VALUE. 0 means Integer.MAX_VALUE. Its default value is 0.
# - "eviction-policy":
# Eviction policy configuration. Its default values is NONE. Available values are as follows:
# - NONE:
# No items will be evicted and the property max-size will be ignored. You still
# can combine it with time-to-live-seconds and max-idle-seconds.
# - LRU: Least Recently Used.
# - LFU: Least Frequently Used.
# - "invalidate-on-change":
# Specifies whether the cached entries are evicted when the entries are updated or removed. Its default
# value is true.
# - "in-memory-format":
# Specifies in which format data will be stored in your Near Cache. Note that a map's in-memory format
# can be different from that of its Near Cache.
# Available values are as follows:
# - BINARY:
# Data will be stored in serialized binary format. It is the default option.
# - OBJECT:
# Data will be stored in deserialized form.
# - NATIVE:
# Data will be stored in the Near Cache that uses Hazelcast's High-Density Memory Store feature.
# This option is available only in Hazelcast Enterprise HD. Note that a map and its Near Cache
# can independently use High-Density Memory Store. For example, while your map does not use
# High-Density Memory Store, its Near Cache can use it.
# - "cache-local-entries":
# Specifies whether the local entries will be cached. It can be useful when in-memory format for
# Near Cache is different from that of the map. By default, it is disabled.
# - "eviction":
# Configuration for the eviction when the in-memory format of the Near Cache is NATIVE. It has the
# following attributes:
# - size: Maximum size (entry count) of the Near Cache.
# - max-size-policy: Maximum size policy for eviction of the Near Cache. Available values are as follows:
# * ENTRY_COUNT: Maximum entry count per member.
# * USED_NATIVE_MEMORY_SIZE: Maximum used native memory size in megabytes.
# * USED_NATIVE_MEMORY_PERCENTAGE: Maximum used native memory percentage.
# * FREE_NATIVE_MEMORY_SIZE: Minimum free native memory size to trigger cleanup.
# * FREE_NATIVE_MEMORY_PERCENTAGE: Minimum free native memory percentage to trigger cleanup.
# - eviction-policy: See the "eviction-policy" element above.
# - comparator-class-name: The comparator to be used while comparing entries to be evicted.
# * "wan-replication-ref":
# Configuration of the WAN replication for your map.
# It has the following attributes:
# - name:
# Name of the WAN replication configuration specified in the "name" attribute of the
# "wan-replication" element. See the "wan-replication" element above.
#
# It has the following sub-elements:
# - "filters":
# Filters to intercept WAN replication events before they are placed to WAN event replication
# queues by providing a filtering API. Just implement Hazelcast's MapWanEventFilter interface
# to create your filters. You can define multiple filters and add to the configuration using the
# "filter" sub-elements within the "filters" element.
# - "republishing-enabled":
# When enabled, an incoming event to a member is forwarded to target cluster of that member. Its
# default value is true.
# - "merge-policy":
# Resolve conflicts that occurred when target cluster already has the replicated
# entry key.
#
# 4 merge policy implementations for IMap and 2 merge policy implementations for
# ICache are provided out-of-the-box.
#
# IMap has the following merge policies:
# com.hazelcast.map.merge.PutIfAbsentMapMergePolicy: Incoming entry merges from the
# source map to the target map if it does not exist in the target map.
# com.hazelcast.map.merge.HigherHitsMapMergePolicy: Incoming entry merges from the
# source map to the target map if the source entry has more hits than the target one.
# com.hazelcast.map.merge.PassThroughMergePolicy: Incoming entry merges from the
# source map to the target map unless the incoming entry is not null.
# com.hazelcast.map.merge.LatestUpdateMapMergePolicy: Incoming entry merges from the
# source map to the target map if the source entry has been updated more recently
# than the target entry. Please note that this merge policy can only be used when the
# clusters' clocks are in sync.
#
# ICache has the following merge policies:
# com.hazelcast.cache.merge.HigherHitsCacheMergePolicy: Incoming entry merges from
# the source cache to the target cache if the source entry has more hits than the
# target one.
# com.hazelcast.cache.merge.PassThroughCacheMergePolicy: Incoming entry merges from
# the source cache to the target cache unless the incoming entry is not null.
# * "indexes":
# You can define indexes for your map using this element's "index" sub-elements. Each "index" has
# only the boolean "ordered" attribute. For example, if you will have a ranged query for a field of a map
# entry, then this attribute should be set to true. But if the field has a boolean value, then it should
# be set to false. Its default value is false.
# * "attributes":
# You can define attributes that may be referenced in predicates, queries and indexes using this element's
# "attribute" sub-elements. Each "attribute" has only the "extractor" attribute which you should define beforehand
# by implementing Hazelcast's ValueExtractor class.
# * "entry-listeners":
# Adds listeners (listener classes) for the map entries using the "entry-listener" sub-elements. You can also set its
# attribute "include-value" to true if you want the entry event to contain the item values, and you can set its attribute
# "local" to true if you want to listen to the entries on the local member.
# * "partition-lost-listeners":
# Adds the partition lost listeners that you created by implementing Hazelcast's PartitionLostListener interface.
# * "quorum-ref":
# Adds the quorum for this map which you configure using the "quorum" element. You should set the "quorum-ref"'s value
# as the "quorum"'s name.
#
map:
default:
in-memory-format: BINARY
metadata-policy: CREATE_ON_UPDATE
statistics-enabled: true
optimize-queries: true
cache-deserialized-values: ALWAYS
backup-count: 1
async-backup-count: 0
time-to-live-seconds: 0
max-idle-seconds: 0
eviction-policy: NONE
max-size:
policy: PER_NODE
max-size: 0
eviction-percentage: 25
min-eviction-check-millis: 100
merge-policy:
batch-size: 100
class-name: PutIfAbsentMergePolicy
read-backup-data: false
hot-restart:
enabled: false
fsync: false
map-store:
enabled: true
initial-mode: LAZY
class-name: com.hazelcast.examples.DummyStore
write-delay-seconds: 60
write-batch-size: 1000
write-coalescing: true
properties:
jdbc_url: my.jdbc.com
near-cache:
max-size: 5000
time-to-live-seconds: 0
max-idle-seconds: 60
eviction-policy: LRU
invalidate-on-change: true
in-memory-format: BINARY
cache-local-entries: false
eviction:
size: 1000
max-size-policy: ENTRY_COUNT
eviction-policy: LFU
wan-replication-ref:
my-wan-cluster-batch:
merge-policy: com.hazelcast.map.merge.PassThroughMergePolicy
filters:
- com.example.SampleFilter
- com.example.SampleFilter2
republishing-enabled: false
indexes:
name:
ordered: false
age:
ordered: true
attributes:
currency:
extractor: com.bank.CurrencyExtractor
entry-listeners:
- class-name: com.your-package.MyEntryListener
include-value: false
local: false
partition-lost-listeners:
- com.your-package.YourPartitionLostListener
quorum-ref: quorumRuleWithThreeNodes
#
# ===== HAZELCAST CONTINUOUS QUERY CACHE CONFIGURATION =====
#
# Configuration element's name is "query-caches".
# You can create your query caches using its "query-cache" sub-element. Its parent element is "map",
# i.e. it should be placed within the "map" configuration. Each "query-cache" has the attribute "name" with which you
# can specify the name of your query cache.
# It has the following sub-elements:
# * "include-value":
# Set to true if you want to cache the value too. Its default value is true.
# * "predicate":
# Predicate to filter events which will be applied to the query cache.
# * "entry-listeners":
# Adds listeners (listener classes) for your query cache entries. See "entry-listeners" in the map configuration above.
# * "in-memory-format":
# Type of the data to be stored in your query cache. See "in-memory-format" in the map configuration above.
# * "populate":
# Set to true if you want to enable the initial population of your query cache. Its default value is true.
# * "coalesce":
# Set to true if you want to enable the coalescing of your query cache. Its default value is false.
# * "delay-seconds":
# Minimum time in seconds that an event waits in the member's buffer. Its default value is 0.
# * "batch-size":
# Batch size used to determine the number of events sent in a batch to your query cache. Its default value is 1.
# * "buffer-size":
# Maximum number of events which can be stored in a partition buffer. Its default value is 16.
# * "eviction":
# Configuration for the eviction of your query cache. See "eviction" in the map configuration above.
# * "indexes":
# You can define indexes for your query cache using this element's "index" sub-elements. See "index" in the
# map configuration above.
#
query-caches:
myContQueryCache:
include-value: true
predicate:
class-name: com.hazelcast.examples.ExamplePredicate
entry-listeners:
- class-name: "..."
in-memory-format: BINARY
populate: true
coalesce: false
delay-seconds: 3
batch-size: 2
buffer-size: 32
eviction:
size: 1000
max-size-policy: ENTRY_COUNT
eviction-policy: LFU
indexes:
"...":
ordered: true
#
# ===== HAZELCAST MULTIMAP CONFIGURATION =====
#
# Configuration element's name is "multimap". It has the optional attribute "name" with which you
# can specify the name of your multimap. Its default value is "default".
# All sub-elements of "multimap" except "value-collection-type" and "binary" have the same meaning as in "map" configuration.
# You can specify the type of the value collection using "value-collection-type". Available values are SET and LIST.
# By default, BINARY in-memory format is used, meaning that the object is stored in a serialized form.
# You can set the element "binary" to false, then, the OBJECT in-memory format is used.
# It has also the following sub-elements:
# * "quorum-ref":
# Adds the Split Brain Protection for this data-structure which you configure using the "quorum" element. You should set the
# "quorum-ref"'s value as the "quorum"'s name.
#
multimap:
default:
backup-count: 1
async-backup-count: 0
binary: true
value-collection-type: SET
entry-listeners:
- class-name: com.hazelcast.examples.EntryListener
include-value: true
local: true
quorum-ref: quorumRuleWithThreeNodes
merge-policy:
batch-size: 100
class-name: PutIfAbsentMergePolicy
#
# ===== HAZELCAST REPLICATED MAP CONFIGURATION =====
#
# Configuration element's name is "replicatedmap". It has the required attribute "name" with which you
# can specify the name of your replicated map.
# It has the following sub-elements:
# * "in-memory-format":
# Specifies in which format data will be stored in your replicated map.
# Available values are as follows:
# - BINARY:
# Data will be stored in serialized binary format. It is the default option.
# - OBJECT:
# Data will be stored in deserialized form.
# * "concurrency-level":
# Number of parallel mutexes to minimize contention on keys. Its default value is 32.
# If higher contention is seen on writes to values inside the replicated map, this value can
# be adjusted to the needs.
# * "replication-delay-millis":
# Time in milliseconds after a put is executed before the value is replicated
# to other members. During this time, multiple puts can be operated and cached up to be sent
# out all at once after the delay. Default value is 100ms. If set to 0, no delay is used and
# all values are replicated one by one.
# * "replication-delay-millis":
# * "async-fillup":
# Specifies whether the replicated map is available for reads before the initial
# replication is completed. Its default value is true. If false, no Exception will be
# thrown when the replicated map is not yet ready, but call is blocked until the initial
# replication is completed.
# * "statistics-enabled":
# When you enable it, you can retrieve replicated map entry statistics such as creation time,
# expiration time, number of hits, key, value, etc. Its default value is true.
# * "entry-listeners":
# Adds listeners (listener classes) for the replicated map entries.
# You can also set its attribute "include-value" to true if you want the entry event to contain the item values,
# and you can set its attribute "local" to true if you want to listen to the entries on the local member.
# * "quorum-ref":
# Adds the Split Brain Protection for this data-structure which you configure using the "quorum" element. You should set the
# "quorum-ref"'s value as the "quorum"'s name.
#
replicatedmap:
replicatedMap1:
in-memory-format: BINARY
concurrency-level: 32
replication-delay-millis: 200
async-fillup: true
statistics-enabled: true
entry-listeners:
- class-name: com.hazelcast.examples.EntryListener
include-value: true
local: true
quorum-ref: quorumRuleWithThreeNodes
merge-policy:
batch-size: 100
class-name: LatestAccessMergePolicy
#
# ===== HAZELCAST CACHE CONFIGURATION =====
#
# Configuration element's name is "cache". It has the required attribute "name" with which you
# can specify the name of your cache.
# It has the following sub-elements:
# * "key-type":
# Type of the cache entries' keys. The fully qualified class name of the cache key type should be given
# using its "class-name" attribute.
# * "value-type":
# Type of the cache entries' values. The fully qualified class name of the cache value type should be given
# using its "class-name" attribute.
# * "statistics-enabled":
# When you enable it, you can retrieve cache entry statistics such as creation time, expiration time,
# number of hits, key, value, etc. Its default value is false.
# * "management-enabled":
# If set to true, JMX beans are enabled and collected statistics are provided. It doesn't automatically
# enable statistics collection. Its default value is false.
# * "read-through":
# If set to true, enables read-through behavior of the cache to an underlying configured
# javax.cache.integration.CacheLoader which is also known as lazy-loading. Its default value is false.
# * "write-through":
# If set to true, enables write-through behavior of the cache to an underlying configured
# javax.cache.integration.CacheWriter which passes any changed value to the external backend resource. Its default
# value is false.
# * "cache-loader-factory":
# Fully qualified class name of the javax.cache.configuration.Factory implementation providing a
# javax.cache.integration.CacheLoader instance to the cache. Provide this class name by using its "class-name"
# attribute.
# * "cache-loader": Name of the cache loader class.
# * "cache-writer-factory":
# Fully qualified class name of the javax.cache.configuration.Factory implementation providing a
# javax.cache.integration.CacheWriter instance to the cache. Provide this class name using its "class-name"
# attribute.
# * "cache-writer": Name of the cache writer class.
# * "expiry-policy-factory":
# Fully qualified class name of the javax.cache.configuration.Factory implementation providing a
# javax.cache.expiry.ExpiryPolicy instance to the cache. Provide this class name using its "class-name"
# attribute.
# * "cache-entry-listeners":
# List of cache entry listeners given by its "cache-entry-listener" sub-element. Each "cache-entry-listener"
# has the following attributes:
# - old-value-required:
# If set to true, previously assigned values for the affected keys will be sent to the
# javax.cache.event.CacheEntryListener implementation. Setting this attribute to true creates additional
# traffic. Its default value is false.
# - synchronous:
# If set to true, the javax.cache.event.CacheEntryListener implementation will be called in a synchronous
# manner. Its default value is false.
# It has the following sub-elements:
# - cache-entry-listener-factory:
# Fully qualified class name of the javax.cache.configuration.Factory implementation providing a
# javax.cache.event.CacheEntryListener instance.
# - cache-entry-event-filter-factory:
# Fully qualified class name of the javax.cache.configuration.Factory implementation providing a
# javax.cache.event.CacheEntryEventFilter instance.
# * "in-memory-format":
# Specifies in which format data will be stored in your cache. Available values are as follows:
# - BINARY:
# Data will be stored in serialized binary format. It is the default option.
# - OBJECT:
# Data will be stored in deserialized form.
# - NATIVE:
# Data will be stored in the cache that uses Hazelcast's High-Density Memory Store feature.
# This option is available only in Hazelcast Enterprise HD.
# * "backup-count":
# Number of synchronous backups. If it is 1, for example, then all entries of the cache are copied to
# one other instance as synchronous for fail-safety. Its default value is 1.
# * "async-backup-count":
# Number of asynchronous backups. For example, if it is 1, then all entries of the cache are copied to
# one other instance as asynchronous for fail-safety. The sum of "backup-count" and "async-backup-count"
# cannot be larger than 6. Its default value is 0.
# * "eviction":
# Configuration for the eviction of your cache. It has the following attributes:
# - size: Maximum size (entry count) of the cache.
# - max-size-policy: Maximum size policy for eviction of the cache. Available values are as follows:
# * ENTRY_COUNT: Maximum entry count per member.
# * USED_NATIVE_MEMORY_SIZE: Maximum used native memory size in megabytes.
# * USED_NATIVE_MEMORY_PERCENTAGE: Maximum used native memory percentage.
# * FREE_NATIVE_MEMORY_SIZE: Minimum free native memory size to trigger cleanup.
# * FREE_NATIVE_MEMORY_PERCENTAGE: Minimum free native memory percentage to trigger cleanup.
# - eviction-policy: See the "eviction-policy" element above.
# * "wan-replication-ref":
# Configuration of the WAN replication for your cache.
# It has the following attributes:
# - name:
# Name of the WAN replication configuration specified in the "name" attribute of the
# "wan-replication" element. See the "wan-replication" element above.
#
# It has the following sub-elements:
# - "filters":
# Filters to intercept WAN replication events before they are placed to WAN event replication
# queues by providing a filtering API. Just implement Hazelcast's CacheWanEventFilter interface
# to create your filters. You can define multiple filters within the "filters" element.
# - "republishing-enabled":
# When enabled, an incoming event to a member is forwarded to target cluster of that member. Its
# default value is true.
# - "merge-policy":
# Resolve conflicts that occurred when target cluster already has the replicated
# entry key.
#
# 4 merge policy implementations for IMap and 2 merge policy implementations for
# ICache are provided out-of-the-box.
#
# ICache has the following merge policies:
# com.hazelcast.cache.merge.HigherHitsCacheMergePolicy: Incoming entry merges from
# the source cache to the target cache if the source entry has more hits than the
# target one.
# com.hazelcast.cache.merge.PassThroughCacheMergePolicy: Incoming entry merges from
# the source cache to the target cache unless the incoming entry is not null.
# * "quorum-ref":
# Adds the quorum for this cache which you configure using the "quorum" element. You should set the
# "quorum-ref"'s value as the "quorum"'s name.
# * "partition-lost-listeners":
# Adds the partition lost listeners that you created by implementing Hazelcast's PartitionLostListener interface.
# * "merge-policy":
# The following are the built-in merge policies for cache. You can either use their full class names or constant
# names (given in parentheses).
# - com.hazelcast.cache.merge.PassThroughCacheMergePolicy (PASS_THROUGH)
# - com.hazelcast.cache.merge.PutIfAbsentCacheMergePolicy (PUT_IF_ABSENT)
# - com.hazelcast.cache.merge.HigherHitsCacheMergePolicy (HIGHER_HITS)
# - com.hazelcast.cache.merge.LatestAccessCacheMergePolicy (LATEST_ACCESS)
# * "hot-restart":
# Used to enable Hazelcast's Hot Restart Persistence feature for the cache. It is available only in Hazelcast
# Enterprise HD. Set its "enabled" to true to enable the feature. By default, it is disabled. It has the following
# sub-element.
# - "fsync":
# Set as true if the writing to disk should be followed by an fsync() system call. Its default value is false.
# * "disable-per-entry-invalidation-events":
# Disables invalidation events for each entry; but full-flush invalidation events are still enabled.
# Full-flush invalidation means the invalidation of events for all entries when clear is called.
# The default value is false.
#
cache:
default:
key-type:
class-name: java.lang.Object
value-type:
class-name: java.lang.Object
statistics-enabled: false
management-enabled: false
read-through: true
write-through: true
cache-loader-factory:
class-name: com.example.cache.MyCacheLoaderFactory
cache-writer-factory:
class-name: com.example.cache.MyCacheWriterFactory
expiry-policy-factory:
class-name: com.example.cache.MyExpirePolicyFactory
cache-entry-listeners:
cache-entry-listener:
old-value-required: false
synchronous: false
cache-entry-listener-factory:
class-name: com.example.cache.MyEntryListenerFactory
cache-entry-event-filter-factory:
class-name: com.example.cache.MyEntryEventFilterFactory
in-memory-format: BINARY
backup-count: 1
async-backup-count: 0
eviction:
size: 1000
max-size-policy: ENTRY_COUNT
eviction-policy: LFU
wan-replication-ref:
name: my-wan-cluster-batch
merge-policy: com.hazelcast.cache.merge.PassThroughCacheMergePolicy
republishing-enabled: true
filters:
- com.example.SampleFilter
quorum-ref: quorumRuleWithThreeNodes
partition-lost-listeners:
- com.your-package.YourPartitionLostListener
merge-policy: com.hazelcast.cache.merge.LatestAccessCacheMergePolicy
hot-restart:
enabled: false
fsync: false
disable-per-entry-invalidation-events: true
#
# ===== HAZELCAST EVENT JOURNAL CONFIGURATION =====
#
# Configuration element's name is "event-journal".
# It has the following attributes and sub-elements:
# * enabled:
# Specifies whether the event journal is enabled.
# * "mapName":
# Map name to which this configuration applies. This attribute's default value is "default".
# Configuration for the event journal with name "default" applies to all maps without
# configuration for a specific named map. In another words, if you specify the default
# event journal config as enabled then all maps which don't have specific event journal
# will be also enabled.
# * "cacheName":
# Cache name to which this configuration applies. This attribute's default value is "default".
# Configuration for the event journal with name "default" applies to all caches without
# configuration for a specific named cache. In another words, if you specify the default
# event journal config as enabled then all caches which don't have specific event journal
# will be also enabled.
# * "capacity":
# The capacity of the event journal. The capacity is the total number of items that the event journal
# can hold at any moment. The actual number of items contained in the journal can be lower. Its default value is 10000.
# The capacity is shared equally between all partitions.
# This is done by assigning each partition {@code getCapacity() / partitionCount}
# available slots in the event journal. Because of this, the effective total
# capacity may be somewhat lower and you must take into account that the
# configured capacity is at least greater than the partition count.
# * "time-to-live-seconds":
# Sets the time to live in seconds.
# Time to live is the time the event journal retains items before removing them from the journal.
# The events are removed on journal read and write actions, not while the journal is idle.
# Time to live can be disabled by setting timeToLiveSeconds to 0. This means that the
# events never expire but they can be overwritten when the capacity of the journal is exceeed.
# Any integer between 0 and Integer.MAX_VALUE. 0 means infinite. Its default value is 0.
#
#
event-journal:
map:
default:
enabled: false
capacity: 10000
time-to-live-seconds: 0
cache:
default:
enabled: false
capacity: 10000
time-to-live-seconds: 0
#
# ===== HAZELCAST MERKLE TREE CONFIGURATION =====
#
# Configuration element's name is "merkle-tree".
# Merkle trees can be configured for map only, under the "map" element.
# Under the "map" element, the Merkle tree configurations belong to map names to which the
# configuration applies. Configuration for the merkle tree with name "default" applies to all
# maps without configuration for a specific named map. In another words, if you specify the default
# merkle tree config as enabled then all maps which don't have specific merkle tree
# will be also enabled.
#
# It has the following attributes and sub-elements:
# * "enabled":
# Specifies whether the merkle tree is enabled.
# * "depth":
# The depth of the merkle tree.
# A larger depth means that a data synchronization mechanism will be able
# to pinpoint a smaller subset of the data structure contents in which a
# change occurred. This causes the synchronization mechanism to be more
# efficient. On the other hand, a larger tree depth means the merkle tree
# will consume more memory.
# A smaller depth means the data synchronization mechanism will have to
# transfer larger chunks of the data structure in which a possible change
# happened. On the other hand, a shallower tree consumes less memory.
# The depth must be between 2 and 27 (exclusive). The default depth is 10.
#
merkle-tree:
map:
default:
enabled: false
depth: 10
#
# ===== HAZELCAST LIST CONFIGURATION =====
#
# Configuration element's name is "list". It has the optional attribute "name" with which you
# can specify the name of your list. This attribute's default value is "default".
# It has the following sub-elements:
# * "statistics-enabled":
# When you enable it, you can retrieve list statistics. Its default value is true.
# * "max-size":
# Maximum size of the list (item count). Its default value is 0, meaning Integer.MAX_VALUE.
# * "backup-count":
# Number of synchronous backups. List is a non-partitioned data structure, so all entries of a
# List reside in one partition. If it is set to 1, there will be 1 backup of that List in another
# member in the cluster. When it is 2, 2 members will have the backup. Its default value is 1.
# * "async-backup-count":
# Number of asynchronous backups. Its default value is 0.
# * "item-listeners":
# Adds listeners (listener classes) for the List items using its sub-element "item-listener". You can
# also set its attribute "include-value" to true if you want the item event to contain the item values.
# * "quorum-ref":
# Adds the Split Brain Protection for this data-structure which you configure using the "quorum" element. You should set the
# "quorum-ref"'s value as the "quorum"'s name.
#
list:
default:
statistics-enabled: false
max-size: 0
backup-count: 1
async-backup-count: 0
item-listeners:
- class-name: com.hazelcast.examples.ItemListener
include-value: true
quorum-ref: quorumRuleWithThreeNodes
merge-policy:
batch-size: 100
class-name: PutIfAbsentMergePolicy
#
# ===== HAZELCAST SET CONFIGURATION =====
#
# Configuration element's name is "set". It has the optional attribute "name" with which you
# can specify the name of your set. This attribute's default value is "default".
# It has the following sub-elements:
# * "statistics-enabled":
# When you enable it, you can retrieve set statistics. Its default value is true.
# * "max-size":
# Maximum size of the set (item count). Its default value is 0, meaning Integer.MAX_VALUE.
# * "backup-count":
# Number of synchronous backups. Set is a non-partitioned data structure, so all entries of a
# Set reside in one partition. If it is set to 1, there will be 1 backup of that Set in another
# member in the cluster. When it is 2, 2 members will have the backup. Its default value is 1.
# * "async-backup-count":
# Number of asynchronous backups. Its default value is 0.
# * "item-listeners":
# Adds listeners (listener classes) for the Set items. You can
# also set its attribute "include-value" to true if you want the item event to contain the item values.
# * "quorum-ref":
# Adds the Split Brain Protection for this data-structure which you configure using the "quorum" element. You should set the
# "quorum-ref"'s value as the "quorum"'s name.
#
set:
default:
backup-count: 1
async-backup-count: 0
max-size: 10
item-listeners:
- class-name: com.hazelcast.examples.ItemListener
include-value: true
quorum-ref: quorumRuleWithThreeNodes
merge-policy:
batch-size: 100
class-name: PutIfAbsentMergePolicy
#
# ===== HAZELCAST TOPIC CONFIGURATION =====
#
# Configuration element's name is "topic". It has the optional attribute "name" with which you
# can specify the name of your topic. This attribute's default value is "default".
# It has the following sub-elements:
# * "global-ordering-enabled":
# When it is set to true, all cluster members that listen to a topic will receive the messages in the
# same order they were published by all members. This way, Hazelcast guarantees that all members will
# see the in the same order. Its default value is false.
# * "statistics-enabled":
# When you enable it, you can retrieve topic statistics such as total number of published and
# received messages. Its default value is true.
# * "message-listeners":
# Adds listeners (listener classes) for the Topic messages using its sub-element "message-listener".
# * "multi-threading-enabled":
# Default is `false`, meaning only one dedicated thread will handle topic messages.
# When multi-threading is enabled (true), all threads from event thread pool can be used for message handling.
#
topic:
default:
global-ordering-enabled: true
statistics-enabled: true
message-listeners:
- com.hazelcast.examples.MessageListener
#
# ===== HAZELCAST RELIABLE TOPIC CONFIGURATION =====
#
# Reliable Topic uses the same ITopic interface. The main difference is that it is backed up by
# Hazelcast Ringbuffer data structure. Reliable Topic messages are stored in the Ringbuffer
# Configuration element's name is "reliable-topic". It has the optional attribute "name" with which you
# can specify the name of your Reliable Topic, which is the same name you give to your Ringbuffer.
# This attribute's default value is "default".
# It has the following sub-elements:
# * "statistics-enabled":
# Enables or disables statistics for this reliable topic.
# Collects the creation time, total number of published and received
# messages for each member locally. Its default value is true.
# * "read-batch-size":
# Sets the read batch size.
# The ReliableTopic tries to read a batch of messages from the ringbuffer.
# It will get at least one, but if there are more available, then it will
# try to get more to increase throughput. The maximum read batch size can
# be influenced using the read batch size.
# Apart from influencing the number of messages to retrieve, the
# readBatchSize also determines how many messages will be processed
# by the thread running the MessageListener before it returns back
# to the pool to look for other MessageListeners that need to be
# processed. The problem with returning to the pool and looking for new work
# is that interacting with an executor is quite expensive due to contention
# on the work-queue. The more work that can be done without retuning to the
# pool, the smaller the overhead.
# If the readBatchSize is 10 and there are 50 messages available,
# 10 items are retrieved and processed consecutively before the thread goes
# back to the pool and helps out with the processing of other messages.
# If the readBatchSize is 10 and there are 2 items available,
# 2 items are retrieved and processed consecutively.
# If the readBatchSize is an issue because a thread will be busy
# too long with processing a single MessageListener and it can't
# help out other MessageListeners, increase the size of the
# threadpool so the other MessageListeners don't need to wait for
# a thread, but can be processed in parallel.
# * "topic-overload-policy":
# A policy to deal with an overloaded topic; so topic where there is no place to store new messages.
# This policy can only be used in combination with the
# com.hazelcast.core.HazelcastInstance#getReliableTopic(String).
# The reliable topic uses a com.hazelcast.ringbuffer.Ringbuffer to
# store the messages. A ringbuffer doesn't track where readers are, so
# it has no concept of a slow consumers. This provides many advantages like
# high performance reads, but it also gives the ability to the reader to
# re-read the same message multiple times in case of an error.
# A ringbuffer has a limited, fixed capacity. A fast producer may overwrite
# old messages that are still being read by a slow consumer. To prevent
# this, we may configure a time-to-live on the ringbuffer (see
# com.hazelcast.config.RingbufferConfig#setTimeToLiveSeconds(int).
# Once the time-to-live is configured, the TopicOverloadPolicy
# controls how the publisher is going to deal with the situation that a
# ringbuffer is full and the oldest item in the ringbuffer is not old
# enough to get overwritten.
# Keep in mind that this retention period (time-to-live) can keep messages
# from being overwritten, even though all readers might have already completed reading.
# Its default value is BLOCK. Available values are as follows:
# - DISCARD_OLDEST:
# Using this policy, a message that has not expired can be overwritten.
# No matter the retention period set, the overwrite will just overwrite
# the item.
# This can be a problem for slow consumers because they were promised a
# certain time window to process messages. But it will benefit producers
# and fast consumers since they are able to continue. This policy sacrifices
# the slow producer in favor of fast producers/consumers.
# - DISCARD_NEWEST:
# Message that was to be published is discarded.
# - BLOCK:
# The caller will wait until there is space in the Ringbuffer.
# - ERROR:
# The publish call fails immediately.
# * "message-listeners":
# Adds listeners (listener classes) for the Reliable Topic messages.
#
reliable-topic:
default:
statistics-enabled: true
topic-overload-policy: ERROR
read-batch-size: 10
message-listeners:
- com.hazelcast.examples.MessageListener
#
# ===== HAZELCAST MAPREDUCE JOBTRACKER CONFIGURATION =====
#
# Configuration element's name is "jobtracker". It has the required attribute "name" with which you
# can specify the name of your MapReduce JobTracker. This attribute's default value is "default".
# It has the following sub-elements:
# * "max-thread-size":
# Maximum thread pool size of the JobTracker. Its default value is 0.
# * "queue-size":
# Maximum number of tasks that can wait to be processed. A value of 0 means number of partitions * 2.
# Very low numbers can prevent successful execution since job might not be correctly scheduled or intermediate
# chunks might be lost. Its default value is 0.
# * "retry-count":
# Currently not used. Reserved for later use where the framework will automatically try to restart / retry
# operations from an available saved point.
# * "chunk-size":
# Number of emitted values before a chunk is sent to the reducers. If your emitted values are big or you want to
# better balance your work, you might want to change this to a lower or higher value. A value of 0 means immediate
# transmission, but remember that low values mean higher traffic costs. A very high value might cause an
# OutOfMemoryError to occur if the emitted values do not fit into heap memory before being sent to the reducers.
# To prevent this, you might want to use a combiner to pre-reduce values on mapping members. Its default
# value is 1000.
# * "communicate-stats":
# Specifies whether the statistics (for example, statistics about processed entries) are transmitted to
# the job emitter. This can show progress to a user inside of an UI system, but it produces additional traffic.
# If not needed, you might want to deactivate this. Its default value is true.
# * "topology-changed-strategy":
# Specifies how the MapReduce framework reacts on topology changes while executing a job. Currently, only
# CANCEL_RUNNING_OPERATION is fully supported, which throws an exception to the job emitter
# (will throw a com.hazelcast.mapreduce.TopologyChangedException).
#
jobtracker:
default:
max-thread-size: 0
queue-size: 0
retry-count: 0
chunk-size: 1000
communicate-stats: true
topology-changed-strategy: CANCEL_RUNNING_OPERATION
#
# ===== HAZELCAST SEMAPHORE CONFIGURATION =====
#
# Configuration element's name is "semaphore". It has the required attribute "name" with which you
# can specify the name of your Semaphore. This attribute's default value is "default".
# It has the following sub-elements:
# * "initial-permits":
# The thread count to which the concurrent access is limited. For example, if you set
# it to 3, concurrent access to the object is limited to 3 threads.
# * "backup-count":
# Number of synchronous backups. For example, if it is set to 1, all permits of the semaphore
# are copied to one other member for fail-safety. Its default value is 1.
# * "async-backup-count":
# Number of asynchronous backups. Its default value is 0.
# * "quorum-ref":
# Adds the Split Brain Protection for this data-structure which you configure using the "quorum" element. You should set the
# "quorum-ref"'s value as the "quorum"'s name.
#
semaphore:
default:
initial-permits: 0
backup-count: 1
async-backup-count: 0
quorum-ref: quorumRuleWithThreeNodes
#
# ===== HAZELCAST COUNT-DOWN-LATCH CONFIGURATION =====
#
# Configuration element's name is "count-down-latch". It has the required attribute "name" with which you
# can specify the name of your CountDownLatch. This attribute's default value is "default".
# It has the following sub-elements:
# * "quorum-ref":
# Adds the Split Brain Protection for this data-structure which you configure using the "quorum" element. You should set the
# "quorum-ref"'s value as the "quorum"'s name.
#
count-down-latch:
default:
quorum-ref: quorumRuleWithThreeNodes
#
# ===== HAZELCAST LOCK CONFIGURATION =====
#
# Configuration element's name is "lock". It has the required attribute "name" with which you
# can specify the name of your Lock. This attribute's default value is "default".
# It has the following sub-elements:
# * "quorum-ref":
# Adds the quorum for this lock which you configure using the "quorum" element. You should set the "quorum-ref"'s value
# as the "quorum"'s name.
#
lock:
default:
quorum-ref: quorumRuleWithThreeNodes
#
# ===== HAZELCAST RINGBUFFER CONFIGURATION =====
#
# Configuration element's name is "ringbuffer". It has the required attribute "name" with which you
# can specify the name of your Ringbuffer.
# It has the following sub-elements:
# * "capacity":
# Number of items in the Ringbuffer. If no "time-to-live-seconds" is set,
# this value will always be equal to the capacity after the head completes
# the first loop around the ring. This is because no items are being
# expired. Its default value is 10000.
# * "time-to-live-seconds":
# Sets the time to live in seconds which is the maximum number of seconds
# for each item to stay in the ringbuffer before being removed.
# Entries that are older than time-to-live-seconds are removed from the
# ringbuffer on the next ringbuffer operation (read or write).
# Time to live can be disabled by setting time-to-live-seconds to 0.
# It means that items won't get removed because they expire. They may only
# be overwritten.
# When time-to-live-seconds is disabled and after the tail does a full
# loop in the ring, the ringbuffer size will always be equal to the capacity.
# The time-to-live-seconds can be any integer between 0 and Integer#MAX_VALUE.
# 0 means infinite. The default is 0.
# * "backup-count":
# Number of synchronous backups. For example, if it is set to 1, then the Ringbuffer items
# are copied to one other member for fail-safety. Its default value is 1.
# * "async-backup-count":
# Number of asynchronous backups. Its default value is 0.
# * "in-memory-format":
# Sets the in-memory format.
# Setting the in-memory format controls the format of the stored item in the
# ringbuffer:
# - OBJECT: the item is stored in deserialized format (a regular object)
# - BINARY (default): the item is stored in serialized format (a binary blob)
# The object in-memory format is useful when:
# - the object stored in object format has a smaller footprint than in
# binary format
# - if there are readers using a filter. Since for every filter
# invocation, the object needs to be available in object format.
# * "ringbuffer-store":
# Includes the Ringbuffer store factory class name and property configurations.
# The store format is the same as the in-memory-format for the Ringbuffer.
# * "quorum-ref":
# Adds the Split Brain Protection for this data-structure which you configure
# using the "quorum" element. You should set the "quorum-ref"'s value as
# the "quorum"'s name.
#
ringbuffer:
default:
capacity: 10000
time-to-live-seconds: 0
backup-count: 1
async-backup-count: 0
in-memory-format: BINARY
ringbuffer-store:
class-name: com.hazelcast.RingbufferStoreImpl
properties:
prop1: prop1-value
prop2: prop2-value
quorum-ref: quorumRuleWithThreeNodes
merge-policy:
class-name: PutIfAbsentMergePolicy
#
# ===== HAZELCAST FLAKE ID GENERATOR CONFIGURATION =====
# Configuration element's name is "flake-id-generator". It has the required attribute "name" with which you
# can specify the name of your Flake ID generator.
# It has the following sub-elements:
#
# * "prefetch-count":
# Sets how many IDs are pre-fetched on the background when one call to
# FlakeIdGenerator.newId() is made. Value must be in the range 1..100,000, default
# is 100.
#
# This setting pertains only to newId() calls made on the member that configured it.
#
# * "prefetch-validity-millis":
# Sets for how long the pre-fetched IDs can be used. If this time elapses, a new batch of IDs
# will be fetched. Time unit is milliseconds, default is 600,000 (10 minutes).
#
# The IDs contain timestamp component, which ensures rough global ordering of IDs. If an
# ID is assigned to an object that was created much later, it will be much out of order. If you
# don't care about ordering, set this value to 0.
#
# This setting pertains only to newId() calls made on the member that configured it.
#
# * "id-offset":
# Sets the offset that will be added to the returned IDs. Default value is 0. Setting might be
# useful when migrating from IdGenerator, default value works for all green-field projects.
#
# For example: Largest ID returned from IdGenerator is 150. FlakeIdGenerator now returns
# 100. If you configure idOffset of 50 and stop using the IdGenerator, the next ID from
# FlakeIdGenerator will be 151 or larger and no duplicate IDs will be generated. In real-life,
# the IDs are much larger. You also need to add a reserve to the offset because the IDs
# from FlakeIdGenerator are only roughly ordered. Recommended reserve is 2^38, that is
# 274877906944.
#
# Negative values are allowed to increase the lifespan of the generator, however keep in
# mind that the generated IDs might also be negative.
#
# * "node-id-offset":
# Sets the offset that will be added to the node ID assigned to cluster member for this generator.
# Might be useful in A/B deployment scenarios where you have cluster A which you want to upgrade.
# You create cluster B and for some time both will generate IDs and you want to have them unique.
# In this case, configure node ID offset for generators on cluster B.
#
# * "statistics-enabled":
# When you enable it, you can retrieve the Flake ID generators statistics. Its default value is true.
#
flake-id-generator:
default:
prefetch-count: 100
prefetch-validity-millis: 600000
id-offset: 0
node-id-offset: 0
statistics-enabled: true
#
# ===== HAZELCAST ATOMIC LONG CONFIGURATION =====
#
# Configuration element's name is "atomic-long". It has the required attribute "name" with which you
# can specify the name of your IAtomicLong. This attribute's default value is "default".
# It has the following sub-elements:
# * "quorum-ref":
# Adds the Split Brain Protection for this data-structure which you configure using the "quorum" element. You should set the
# "quorum-ref"'s value as the "quorum"'s name.
#
atomic-long:
default:
merge-policy:
batch-size: 100
class-name: PutIfAbsentMergePolicy
quorum-ref: quorumRuleWithThreeNodes
#
# ===== HAZELCAST ATOMIC REFERENCE CONFIGURATION =====
#
# Configuration element's name is "atomic-reference". It has the required attribute "name" with which you
# can specify the name of your IAtomicReference. This attribute's default value is "default".
# It has the following sub-elements:
# * "quorum-ref":
# Adds the Split Brain Protection for this data-structure which you configure using the "quorum" element. You should set the
# "quorum-ref"'s value as the "quorum"'s name.
#
atomic-reference:
default:
merge-policy:
batch-size: 100
class-name: PutIfAbsentMergePolicy
quorum-ref: quorumRuleWithThreeNodes
#
# ===== HAZELCAST LISTENER CONFIGURATIONS =====
#
# Configuration used to register the listeners that you created by implementing Hazelcast's
# MembershipListener, DistributedObjectListener, MigrationListener and PartitionLostListener interfaces.
#
listeners:
- your-package.YourMembershipListener
- your-package.YourDistributedObjectListener
- your-package.YourMigrationListener
- your-package.YourPartitionLostListener
#
# ===== HAZELCAST SERIALIZATION CONFIGURATION =====
#
# Configuration element's name is "serialization".
# It has the following sub-elements:
# * "portable-version":
# Version of the portable serialization. Portable version is used to differentiate two
# of the same classes that have changes such as a new field or a new field type.
# * "use-native-byte-order":
# Set as true if you want to use the native byte order of the underlying platform. Its default value is false.
# * "byte-order":
# Specifies the byte order that the serialization will use. Its default value is BIG_ENDIAN. Available values
# are BIG_ENDIAN and LITTLE_ENDIAN.
# * "enable-compression":
# Set as true to enable compression when default Java serialization is used. Its default value is false.
# * "enable-shared-object":
# Set as true to enable shared object when default Java serialization is used. Its default value is false.
# * "allow-unsafe":
# Set as true to allow the usage of unsafe. Its default value is false.
# * "data-serializable-factories":
# Lists your class implementations of Hazelcast's DataSerializableFactory. Each factory has the required
# "factory-id" attribute that you should give as the ID of your factory.
# * "portable-factories":
# Lists your class implementations of Hazelcast's PortableFactory. Each factory has the required "factory-id"
# attribute that you should give as the ID of your factory.
# * "global-serializer":
# Global serializer should be defined with "global-serializer" element. It has an optional boolean
# "override-java-serialization" attribute. If you set it as true, the Java serialization step will be handled by the
# global serializer, not by the Java Serializable or Externalizable
# * "serializers":
# Lists the serializers (classes) that you implement using Hazelcast's StreamSerializer, ByteArraySerializer etc.
#
# The serializer sub-elements has two required attributes:
# - class-name: Full class name of the serializer you implemented.
# - type-class: Type of your serializer class implementation.
#
# * "check-class-def-errors":
# If set to true, serialization system will check the class definitions error at the start of serialization process
# and throw a Serialization Exception with the error definition.
# * "java-serialization-filter":
# Allows to configure blacklisting and whitelisting for deserialized classes when Java serialization is used.
#
serialization:
portable-version: 0
use-native-byte-order: false
byte-order: BIG_ENDIAN
data-serializable-factories:
- factory-id: 1
class-name: com.hazelcast.examples.DataSerializableFactory
portable-factories:
- factory-id: 1
class-name: com.hazelcast.examples.PortableFactory
global-serializer:
class-name: com.hazelcast.examples.GlobalSerializerFactory
serializers:
- type-class: com.hazelcast.examples.DummyType
class-name: com.hazelcast.examples.SerializerFactory
check-class-def-errors: true
java-serialization-filter:
defaults-disabled: true
blacklist:
class:
- com.acme.app.BeanComparator
whitelist:
class:
- java.lang.String
- example.Foo
package:
- com.acme.app
- com.acme.app.subpkg
prefix:
- com.hazelcast.
- java
#
# ===== HAZELCAST HIGH-DENSITY MEMORY STORE CONFIGURATION =====
#
# This feature is available only in Hazelcast Enterprise HD. Configuration element's name is
# "native-memory".
# It has the following attributes:
# - enabled:
# Set as true to enable the High-Density Memory Store usage. Its default value is false.
# - allocator-type:
# Type of the memory allocator. Its default value is POOLED. Available values are as follows:
# * STANDARD: Allocates/frees the memory using default OS memory manager.
# * POOLED: Manages memory blocks in thread local pools.
#
# It has the following sub-elements:
# - "size":
# Size of the total native memory to allocate. You can give the size using its "value" attribute and the unit
# using its "unit" attribute. Unit can be bytes, kilobytes, megabytes and gigabytes. Default value is 128 and
# default unit is MEGABYTES.
# - "min-block-size":
# Minimum size of the blocks in bytes to split and fragment a page block to assign to an allocation request.
# It is used only by the POOLED memory allocator. The value has to be power of two. Default value is 16.
# - "page-size":
# Size of the page in bytes to allocate memory as a block. It is used only by the POOLED memory allocator. Its
# default value is 1 << 22 (about 4 MB).
# - "metadata-space-percentage":
# Percentage of the allocated native memory that is used for the metadata such as indexes, offsets, etc. It is
# used only by the POOLED memory allocator. Its default value is 12.5.
#
native-memory:
enabled: true
allocator-type: POOLED
size:
unit: MEGABYTES
value: 256
min-block-size: 32
page-size: 4194304
metadata-space-percentage: 12.5
#
# ===== HAZELCAST USER DEFINED SERVICES CONFIGURATION =====
#
# This part is used to perform configurations after you develop your own data structure or service using
# Hazelcast's Service Provider Interface (SPI). Configuration element's name is "services". You can list
# your services here.
# It has the following attribute:
# * enable-defaults:
# Set as true if you want to use Hazelcast's services and operations (getMap, putAsync, etc.)
# in your own service implementation. Its default value is true.
#
# Each service has the following sub-elements:
# * "enabled":
# Specifies whether the service is enabled.
# * "name":
# Name of your service to be registered.
# * "class-name":
# Full name of the class that you developed for your service on top of Hazelcast SPI.
# * "properties":
# Lists the properties, with which you can specify the name and value of your
# custom service properties.
# * "configuration":
# Lists the configuration elements that you defined for your service using Hazelcast's "Config" object.
#
services:
enable-defaults: false
custom-service:
enabled: true
class-name: com.hazelcast.examples.MyService
properties:
prop1: prop1-value
prop2: prop2-value
#
# ===== HAZELCAST SECURITY CONFIGURATION =====
#
# This feature is available only in Hazelcast Enterprise. Configuration element's name is "security".
# It has the following attributes and sub-elements:
# * enabled:
# Set to true to enable Hazelcast's security features.
# * "member-credentials-factory":
# Specifies the name and properties of your class that you developed by implementing Hazelcast's Credentials
# interface.
# * "member-login-modules":
# Specifies the name and properties of your class that you developed by implementing Hazelcast's LoginModule
# interface. Each login module class can be given by using the "login-module" element. This element has the
# attribute "usage" that specifies the way you want to use the LoginModule's behavior during the
# authentication process for Hazelcast members. Available values for this attribute are REQUIRED, REQUISITE,
# SUFFICIENT and OPTIONAL.
# * "client-login-modules":
# It has the same purpose as "member-login-modules" explained above. However, instead of Hazelcast members,
# it is used for Hazelcast native clients.
# * "client-permission-policy":
# Specifies the name and properties of your class that you developed by implementing Hazelcast's
# IPermissionPolicy interface, which is the default permission policy (com.hazelcast.security.IPermissionPolicy).
# This policy defines the client authorization specifications.
# * "client-permissions":
# Lists the client permissions that can be accessed by the client permission policy. For each permission, you
# need to provide the end points and actions to be permitted. Also, the name and principal for each permission
# should be given using the "name" and "principal" attributes. Please see
# http://docs.hazelcast.org/docs/latest/manual/html-single/index.html#permissions for all permissions and actions.
# * "security-interceptor"
# Specifies the security interceptor class that you developed by implementing Hazelcast's SecurityInterceptor
# interface to intercept every remote operation executed by a client.
# * "client-block-unmapped-actions"
# Specifies whether to block (true) or allow (false) actions, submitted as tasks in an Executor from
# the clients and have no permission mappings.
#
security:
enabled: false
member-credentials-factory:
class-name: com.hazelcast.examples.MyCredentialsFactory
properties:
property: value
member-login-modules:
- class-name: com.hazelcast.examples.MyRequiredLoginModule
usage: REQUIRED
properties:
property: value
client-login-modules:
- class-name: com.hazelcast.examples.MyOptionalLoginModule
usage: OPTIONAL
properties:
property: value
- class-name: com.hazelcast.examples.MyRequiredLoginModule
usage: REQUIRED
properties:
property: value
client-permission-policy:
class-name: com.hazelcast.examples.MyPermissionPolicy
properties:
property: value
client-permissions:
on-join-operation: RECEIVE
all:
principal: admin
endpoints:
- 127.0.0.1
config:
endpoints:
- 127.0.0.1
transaction:
endpoints:
- 127.0.0.1
map:
- name: custom
principal: dev
endpoints:
- 127.0.0.1
actions:
- create
- destroy
- put
- read
queue:
- name: "*"
actions:
- all
topic:
- name: "*"
actions:
- all
multimap:
- name: "*"
actions:
- all
list:
- name: "*"
actions:
- all
set:
- name: "*"
actions:
- all
id-generator:
- name: "*"
actions:
- all
flake-id-generator:
- name: "*"
actions:
- all
lock:
- name: "*"
actions:
- all
atomic-long:
- name: "*"
actions:
action: all
countdown-latch:
- name: "*"
actions:
- all
semaphore:
- name: "*"
actions:
- all
executor-service:
- name: "*"
actions:
- all
durable-executor-service:
- name: "*"
actions:
- all
cardinality-estimator:
- name: "*"
actions:
- all
scheduled-executor:
- name: "*"
actions:
- all
cache:
- name: "*"
actions:
- all
user-code-deployment:
- name: "*"
actions:
- all
pn-counter:
- name: "*"
actions:
- all
client-block-unmapped-actions: true
security-interceptors:
- com.your-package.YourSecurityInterceptorImplementation
#
# ===== HAZELCAST MEMBER ATTRIBUTE CONFIGURATION =====
#
# You can define member attributes for your Hazelcast members to tag your members according to your
# business logic requirements. Configuration element's name is "member-attributes". You can list
# each member attribute by their name. For each attribute, you need to provide its
# type and value.
#
member-attributes:
CPU_CORE_COUNT:
type: int
value: 4
CPU_CORE_FREQ:
type: int
value: 1033
#
# ===== HAZELCAST QUORUM CONFIGURATION =====
#
# Configuration element's name is "quorum".
# It has the following attributes:
# * name:
# Name of your quorum. This name will be given as the value for "quorum-ref" element in the data structure
# configuration for which you want to define a quorum. Currently, IMap, TransactionalMap and Cache
# structures support quorum.
# * enabled:
# Specifies whether this quorum is enabled.
#
# It has the following sub-elements:
# * "quorum-size":
# The minimum number of members required in a cluster for the cluster to remain in an
# operational state. If the number of members is below the defined minimum at any time,
# the operations are rejected and the rejected operations return a QuorumException to
# their callers.
# * "quorum-type":
# Specifies for which operations the quorum will be applied. Available values are
# READ, WRITE and READ_WRITE.
# * "quorum-function-class-name":
# Name of the class that you develop by implementing Hazelcast's QuorumFunction interface to
# conclude the absence/presence of your quorum. This function is triggered when any change happens to
# the member list.
# * "quorum-listeners":
# Provides the list of quorum listeners that you can register to be notified about quorum results.
# Each listener is specified by "quorum-listener" sub-element. Quorum listeners are local to the member
# that they are registered, so they receive only events occurred on that local member.
#
quorum:
quorumRuleWithThreeMembers:
enabled: true
quorum-size: 3
quorum-type: READ_WRITE
quorum-function-class-name: com.your-package.AbsPresMyQuorum
quorum-listeners:
- com.your-package.ThreeMemberQuorumListener
#
# ===== HAZELCAST LITE MEMBER CONFIGURATION =====
#
# Configuration element's name is "lite-member". When you want to use a Hazelcast member as a lite member,
# set this element's "enabled" attribute to true in that member's YAML configuration. Lite members do not store
# data and are used mainly to execute tasks and register listeners. They do not have partitions.
#
lite-member:
enabled: true
#
# ===== HAZELCAST HOT RESTART PERSISTENCE CONFIGURATION =====
#
# This feature is available only in Hazelcast Enterprise HD. Configuration element's name is
# "hot-restart-persistence". It has the required attribute "enabled" to specify whether this feature will be enabled
# on your cluster. This part is the feature's configuration itself and you define the general specifications for
# the feature. However, note that "map" and "cache" have a sub-element called "hot-restart" with which you should
# enable its usage on those data structures. Keep in mind that the Hot Restart feature is currently supported for
# Hazelcast's map and cache data structures.
# It has the following sub-elements:
# * "base-dir":
# Specifies the directory where the Hot Restart data will be stored. Its default value is hot-restart.
# You can use the default value, or you can specify another folder.
# This directory will be created automatically if it does not exist.
# * "backup-dir":
# Specifies the directory where the Hot backup data will be stored. If this element is not defined, hot backup will
# be disabled. If a directory is defined which does not exist, it will be created on first backup. To avoid clashing data
# on multiple backups, each backup has a unique sequence ID which determines the name of the directory which will
# contain all hot restart data. This unique directory is created as a subdirectory of the configured `backup-dir`.
# * "parallelism":
# Level of parallelism in Hot Restart Persistence. There will be this many IO threads,
# each writing in parallel to its own files. During the Hot Restart procedure, this many
# IO threads will be reading the files and this many Rebuilder threads will be rebuilding
# the Hot Restart metadata.
# * "validation-timeout-seconds":
# Validation timeout for the Hot Restart process when validating the cluster members expected to join and the partition
# table on the whole cluster.
# * "data-load-timeout-seconds":
# Data load timeout for the Hot Restart process. All members in the cluster should finish restoring their local data
# before this timeout period.
# * "cluster-data-recovery-policy":
# Specifies the data recovery policy that will be respected during Hot Restart cluster start. Valid values are;
# FULL_RECOVERY_ONLY: Starts the cluster only when all expected members are present and correct. Otherwise, it fails.
# This is the default value.
# PARTIAL_RECOVERY_MOST_RECENT: Starts the cluster with the members which have most up-to-date partition table and
# successfully restored their data. All other members will leave the cluster and force start themselves. If no member
# restores its data successfully, cluster start fails.
# PARTIAL_RECOVERY_MOST_COMPLETE: Starts the cluster with the largest group of members which have the same partition
# table version and successfully restored their data. All other members will leave the cluster and force start themselves.
# If no member restores its data successfully, cluster start fails.
#
hot-restart-persistence:
enabled: true
base-dir: /mnt/hot-restart
backup-dir: /mnt/hot-backup
validation-timeout-seconds: 120
data-load-timeout-seconds: 900
cluster-data-recovery-policy: PARTIAL_RECOVERY_MOST_COMPLETE
#
# ===== HAZELCAST USER CODE DEPLOYMENT CONFIGURATION =====
#
# Configuration element's name is "user-code-deployment". It has the required attribute "enabled" to
# specify whether this feature will be enabled on your cluster.
# It has the following sub-elements:
# * "class-cache-mode":
# Controls the local caching behavior for the classes loaded from the remote class repository.
# Available values are as follows:
# ETERNAL: Cache the loaded classes locally. This is the default value and suitable when you load long-living objects,
# such as domain objects stored in a map.
# OFF: Do not cache the loaded classes locally.
# * "provider-mode":
# Controls how the classes are served to the other cluster members. Available values are as follows:
# LOCAL_AND_CACHED_CLASSES: Serve classes loaded from both local classpath and from other members.
# This is the default value.
# LOCAL_CLASSES_ONLY: Serve classes from the local classpath only. Classes loaded from other members
# will be used locally, but they are not served to other members.
# OFF: Never serve classes to other members.
# * "blacklist-prefixes":
# Comma separated name prefixes of classes/packages to be prevented from dynamic class loading.
# For example, if you set it as "com.foo", remote loading of all classes from the "com.foo" package
# will be blacklisted, including the classes from all its sub-packages. If you set it as "com.foo.Class",
# then the "Class" and all classes having the "Class" as prefix in the "com.foo" package will be blacklisted.
# * "whitelist-prefixes":
# Comma separated name prefixes of classes/packages only from which the classes will be loaded. It allows
# to quickly configure remote loading only for classes from selected packages. It can be used together
# with blacklisting. For example, you can whitelist the prefix "com.foo" and blacklist the prefix "com.foo.secret".
# * "provider-filter":
# Filter to constraint members to be used for a class loading request when a class is not available
# locally. The value is in the format "HAS_ATTRIBUTE:foo". When it is set as "HAS_ATTRIBUTE:foo", the class
# loading request will only be sent to the members which have "foo" as a member attribute.
#
user-code-deployment:
enabled: true
class-cache-mode: ETERNAL
provider-mode: LOCAL_CLASSES_ONLY
blacklist-prefixes: com.foo
whitelist-prefixes: com.bar.MyClass
provider-filter: HAS_ATTRIBUTE:lite
#
# ===== HAZELCAST CRDT REPLICATION CONFIGURATION =====
#
# Configures the replication mechanism for all CRDT implementations.
# The CRDT states are replicated in rounds (the period is configurable) and in each round the state is replicated
# up to the configured number of members.
# It has the following sub-elements:
# * "max-concurrent-replication-targets":
# The maximum number of target members that we replicate the CRDT states to in one period. A higher count
# will lead to states being disseminated more rapidly at the expense of burst-like behaviour - one update
# to a CRDT will lead to a sudden burst in the number of replication messages in a short time interval.
# * "replication-period-millis":
# The period between two replications of CRDT states in milliseconds. A lower value will increase the
# speed at which changes are disseminated to other cluster members at the expense of burst-like behaviour - less
# updates will be batched together in one replication message and one update to a CRDT may cause a sudden
# burst of replication messages in a short time interval. The value must be a positive non-null integer.
#
crdt-replication:
max-concurrent-replication-targets: 1
replication-period-millis: 1000
#
# ===== HAZELCAST PN COUNTER CONFIGURATION =====
#
# Configuration element's name is "pn-counter". It has the optional attribute "name" with which you
# can specify the name of your PN counter. Its default value is "default".
# It has the following sub-elements:
# * "replica-count":
# Number of replicas on which the CRDT state will be kept. The updates are replicated
# asynchronously between replicas.
# The number must be greater than 1 and up to 2147483647 (Integer.MAX_VALUE).
# The default value is 2147483647 (Integer.MAX_VALUE).
# * "quorum-ref":
# Adds the Split Brain Protection for this data-structure which you configure using the "quorum" element. You should set
# the "quorum-ref"'s value as the "quorum"'s name.
# * "statistics-enabled":
# When you enable it, you can retrieve the PN counter statistics. Its default value is true.
#
pn-counter:
default:
replica-count: 2147483647
quorum-ref: quorumRuleWithThreeNodes
statistics-enabled: true
#
# ===== HAZELCAST ADVANCED NETWORK CONFIGURATION =====
#
# The advanced network configuration provides fine-tuning capabilities for
# configuring network with the ability of defining separate server sockets for
# different protocols, such as for member-member and member-client
# communication. This configuration renders exclusive or relation with the
# generic "network" configuration element.
#
# The "advanced-network" element has the following sub-elements:
# * "enabled":
# Indicates whether the advanced network configuration is enabled or not. Default is false.
# * "join":
# This configuration lets you choose a discovery mechanism that Hazelcast will use to form a cluster.
# Hazelcast can find members by multicast, TCP/IP lists and by various discovery mechanisms provided by different cloud APIs.
# The following are the elements of "join":
# - "multicast":
# It has the following sub-elements to fine tune the multicast discovery.
# - "enabled":
# Specifies whether multicast discovery is enabled. Default value is true.
# - "loopbackModeEnabled":
# Specifies if the loopback mode is enabled for multicast discovery. Default value is false.
# - "multicast-group":
# Specifies the multicast group IP address when you want to create clusters within
# the same network. Its default value is 224.2.2.3.
# - "multicast-port":
# Specifies the multicast socket port that the Hazelcast member listens to and
# sends discovery messages through. Its default value is 54327.
# - "multicast-time-to-live":
# Time-to-live value for multicast packets sent out to control the scope of multicasts.
# - "multicast-timeout-seconds":
# Only when the members are starting up, this timeout (in seconds) specifies the
# period during which a member waits for a multicast response from another node.
# For example, if you set it as 60 seconds, each node will wait for 60 seconds until a
# leader node is selected. Its default value is 2 seconds.
# - "trusted-interfaces":
# Includes IP addresses of trusted members. When a node wants to join to the cluster,
# its join request will be rejected if it is not a trusted member.
# You can give an IP addresses range using the wildcard (*) on the last digit of
# IP address (e.g. 192.168.1.* or 192.168.1.100-110).
# - "tcp-ip":
# It has the following sub-elements.
# - "enabled":
# Specifies whether the TCP/IP discovery is enabled or not. Default value is false.
# - "connection-timeout-seconds":
# The maximum amount of time Hazelcast is going to try to connect to a well known member
# before giving up. Setting it to a too low value could mean that a member is not able
# to connect to a cluster. Setting it to a too high value means that member startup could
# slow down because of longer timeouts (e.g. when a well known member is not up). Increasing
# this value is recommended if you have many IPs listed and the members cannot properly
# build up the cluster. Its default value is 5.
# - "required-member":
# IP address of the required member. Cluster will only be formed if the member with this
# IP address is found.
# - "member":
# IP address(es) of one or more well known members. Once members are connected to these
# well known ones, all member addresses will be communicated with each other. You can
# also give comma separated IP addresses using the "members" element or list the members
# with the "member" element under "member-list".
# - "members":
# Comma separated IP addresses of one or more well known members.
# - "member-list":
# Sequence of IP address(es) of one or more well known members.
# - "interface":
# IP address(es) of one or more well known members.
# - "aws":
# Set its "enabled" sub-element to true for discovery within Amazon EC2.
# Please refer to https://github.com/hazelcast/hazelcast-aws/#configuration for the configuration details.
# - "gcp":
# Set its "enabled" sub-element to true for discovery within the Google Cloud Platform.
# Please refer to https://github.com/hazelcast/hazelcast-gcp/#configuration for the configuration details.
# - "azure":
# Set its "enabled" sub-element to true for discovery within Microsoft Azure.
# Please refer to https://github.com/hazelcast/hazelcast-azure/#configuring-at-hazelcast-side for
# the configuration details.
# - "kubernetes":
# Set its "enabled" sub-element to true for discovery in the Kubernetes environment.
# Please refer to https://github.com/hazelcast/hazelcast-kubernetes#hazelcast-configuration for
# the configuration details.
# - "eureka":
# Set its "enabled" sub-element to true for discovery with using Eureka Service Registry.
# Please refer to https://github.com/hazelcast/hazelcast-eureka#hazelcast-configuration for
# the configuration details.
# - "discovery-strategies":
# Set its "enabled" sub-element to true for discovery in various cloud infrastructures. You also need to set the
# value of "hazelcast.discovery.enabled" property to true. See the description of the "properties" element
# to learn how to do this.
# You can define multiple discovery strategies using the "discovery-strategy" sub-element and its
# properties. Please refer to
# http://docs.hazelcast.org/docs/latest/manual/html-single/index.html#discovering-cluster-members
# to see the properties you can use.
# The following is an example for EC2 cloud.
# discovery-strategies:
# - enabled: true
# class: com.hazelcast.jclouds.JCloudsDiscoveryStrategy
# properties:
# provider: aws-ec2
# identity: AWS_IDENTITY
# credential: AWS_CREDENTIAL
# * "member-address-provider":
# IMPORTANT
# This configuration is not intended to provide addresses of other cluster members with
# which the Hazelcast instance will form a cluster. This is an SPI for advanced use in
# cases where the DefaultAddressPicker does not pick suitable addresses to bind to
# and publish to other cluster members. For instance, this could allow easier
# deployment in some cases when running on Docker, AWS or other cloud environments.
# That said, if you are just starting with Hazelcast, you will probably want to
# set the member addresses by using the tcp-ip or multicast configuration
# or adding a discovery strategy.
# Member address provider allows to plug in own strategy to customize:
# 1. What address Hazelcast will bind to
# 2. What address Hazelcast will advertise to other members on which they can bind to
# In most environments you don't need to customize this and the default strategy will work just
# fine. However in some cloud environments the default strategy does not make the right choice and the
# member address provider delegates the process of address picking to external code.
# It has the following sub-elements:
# - enabled:
# Specifies whether the member address provider SPI is enabled or not. Its default value is false.
# - "class-name":
# The name of the class implementing the com.hazelcast.spi.MemberAddressProvider interface.
# - "properties":
# The properties that will be provided when constructing the provided MemberAddressProvider. Hazelcast will
# first try instantiating the provided class by invoking a constructor accepting a single
# java.util.Properties instance. In the case where there is no such constructor and there are also
# no properties defined by this configuration, Hazelcast will exceptionally try to use the no-arg
# constructor.
# * "failure-detector":
# A failure detector is responsible to determine if a member in the cluster is unreachable or crashed.
# Please refer to https://docs.hazelcast.org/docs/latest/manual/html-single/index.html#failure-detector-configuration
# for the failure detectors implemented by Hazelcast.
#
# This element has the following sub-element:
# * "icmp":
# ICMP can be used in addition to the other detectors. It operates at layer 3 and detects network
# and hardware issues more quickly.
#
# It has the following sub-elements:
# * "timeout-milliseconds":
# Timeout in Milliseconds before declaring a failed ping.
# * "fail-fast-on-startup":
# Cluster Member will fail to start if it is unable to action an ICMP ping command when ICMP is enabled.
# Failure is usually due to OS level restrictions.
# * "interval-milliseconds":
# Time in milliseconds between each ICMP ping.
# * "max-attempts":
# Maximum number of consecutive failed attempts before declaring a member suspect.
# * "parallel-mode":
# Run ICMP detection in parallel with the Heartbeat failure detector.
# * "ttl":
# Maximum number of times the IP Datagram (ping) can be forwarded, in most cases
# all Hazelcast cluster members would be within one network switch/router therefore
# default of 0 is usually sufficient.
#
#
# * "member-server-socket-endpoint-config":
# Configures the server socket used for the member-member communication.
# * "client-server-socket-endpoint-config":
# Configures the server socket used for the member-client communication.
# * "wan-server-socket-endpoint-config":
# Configures the server sockets used for the WAN replication's inbound WAN connections.
# Multiple WAN server sockets can be configured to allow configuring separate server sockets
# for each inbound WAN connection.
# * "memcache-server-socket-endpoint-config":
#
# These four server socket elements have the following sub-elements:
# - "name":
# Name of the endpoint configuration. Only relevant when defining WAN server sockets.
# * "port":
# The ports which Hazelcast will use to communicate between cluster members. Its default value is 5701.
# It has the following sub-elements.
# - "port-count":
# The default value is 100, meaning that Hazelcast will try to bind 100 ports.
# If you set the value of port as 5701, as members join the cluster, Hazelcast tries to find
# ports between 5701 and 5801. You can change the port count in cases like having large
# instances on a single machine or you are willing to have only a few ports assigned.
# - "auto-increment":
# Default value is true. If port is set to 5701, Hazelcast will try to find free
# ports between 5701 and 5801. Normally, you will not need to change this value, but it comes
# in handy when needed. You may also want to choose to use only one port. In that case, you can
# disable the auto-increment feature of port by setting its value as false.
# * "public-address":
# Overrides the public address of a node. By default, a node selects its socket address
# as its public address. But behind a network address translation (NAT), two endpoints (nodes)
# may not be able to see/access each other. If both nodes set their public addresses to their
# defined addresses on NAT, then they can communicate with each other. In this case, their
# public addresses are not an address of a local network interface but a virtual address defined by
# NAT.
# This is optional to set and useful when you have a private cloud.
# * "reuse-address":
# When you shutdown a cluster member, the server socket port will be in the TIME_WAIT
# state for the next couple of minutes. If you start the member right after shutting it down,
# you may not be able to bind it to the same port because it is in the TIME_WAIT state. If you
# set reuse-address to true, the TIME_WAIT state is ignored and you can bind the member to the
# same port again. Default value is false.
# * "outbound-ports":
# By default, Hazelcast lets the system pick up an ephemeral port during socket bind operation.
# But security policies/firewalls may require to restrict outbound ports to be used by
# Hazelcast-enabled applications. To fulfill this requirement, you can configure Hazelcast to use
# only defined outbound ports.
# The outbound ports are listed as a sequence under the "outbound-ports" element.
# * "interfaces":
# Specifies which network interfaces Hazelcast should use. You need to set its "enabled" sub-element
# to true to be able to use your defined interfaces. By default, it is disabled.
# You can define multiple interfaces using a nested "interfaces" sequence.
# * "ssl":
# Lets you configure SSL using the SSL context factory. This feature is available only in Hazelcast
# Enterprise. To be able to use it, encryption should NOT be enabled and you should first implement
# your SSLContextFactory class. Its configuration contains the factory class and SSL properties.
# By default, it is disabled. The following is an example:
# ssl:
# enabled: true
# factory-class-name: com.hazelcast.nio.ssl.BasicSSLContextFactory
# properties:
# keyStore: keyStore
# keyStorePassword: keyStorePassword
# keyManagerAlgorithm: SunX509
# trustManagerAlgorithm: SunX509
# protocol: TLS
# mutualAuthentication: REQUIRED
# * "socket-interceptor":
# Lets you add custom hooks to join and perform connection procedures (like identity checking using
# Kerberos, etc.). This feature is available only in Hazelcast Enterprise. To be able to use it, you
# should first implement the MemberSocketInterceptor (for members joining to a cluster) or
# SocketInterceptor (for clients connecting to a member) class. Its configuration contains the class you
# implemented and socket interceptor properties. By default, it is disabled. The following is an example:
# socket-interceptor:
# enabled: true
# class-name: com.hazelcast.examples.MySocketInterceptor
# properties:
# kerberos-host: kerb-host-name
# kerberos-config-file: kerb.conf
# * "symmetric-encryption":
# Lets you encrypt the entire socket level communication among all Hazelcast members.
# This feature is available only in Hazelcast Enterprise. Its configuration contains the encryption
# properties and the same configuration must be placed to all members. By default, it is disabled.
# The following is an example:
# symmetric-encryption:
# enabled: true
# algorithm: PBEWithMD5AndDES
# salt: thesalt
# password: thepass
# iteration-count: 19
# * "socket-options":
# It has the following sub-elements:
# * "buffer-direct":
# Specifies whether direct or non-direct buffers should be allocated for the socket. The default value is false.
# * "tcp-no-delay":
# Specifies whether Nagle's algorithm should be disabled. The default value is true meaning that Nagle's
# algorithm is disabled.
# * "keep-alive":
# Specifies whether TCP keep-alive should be enabled. The default value is true.
# * "connect-timeout-seconds":
# Specifies the TCP timeout in seconds. The default value is 0.
# * "send-buffer-size-kb":
# Specifies the size of the send buffer. The default value is 128KB.
# * "receive-buffer-size-kb":
# Specifies the size of the receive buffer. The default value is 128KB.
# * "linger-seconds":
# Specifies the TCP linger seconds. The default value is 0.
#
# * "rest-server-socket-endpoint-config":
# Controls access to Hazelcast HTTP REST API.
# The methods available through REST API are grouped to several REST endpoint groups, which can be specified
# in this section.
#
# The "rest-server-socket-endpoint-config" element has the same sub-elements that the above server socket
# elements have plus it has the following additional sub-element.
# * "endpoint-groups":
# Enables or disables named REST endpoint groups.
# If a group is not listed within the rest-api configuration, then it's 'enabledByDefault' flag is used
# to control the behavior of the group.
#
# The groups can be defined with the "endpoint-group" sub-element. Groups and their defaults:
# * CLUSTER_READ - enabled
# Group of operations for retrieving cluster state and its version.
# * CLUSTER_WRITE - disabled
# Operations which changes cluster or node state or their configurations.
# * HEALTH_CHECK - disabled
# Group of endpoints for HTTP health checking.
# * HOT_RESTART - disabled
# Group of HTTP REST APIs related to Hot Restart feature.
# * WAN - disabled
# Group of HTTP REST APIs related to WAN Replication feature.
# * DATA - disabled
# Group of HTTP REST APIs for data manipulation in the cluster (e.g. IMap and IQueue operations).
#
# * "wan-endpoint-config":
# This element configures socket settings for the outgoing WAN connections.
#
# This element has the following sub-elements from the list above:
# * "name"
# * "outbound-ports"
# * "interfaces"
# * "ssl"
# * "socket-interceptor"
# * "symmetric-encryption"
# * "socket-options"
#
advanced-network:
enabled: false
join:
multicast:
enabled: true
loopbackModeEnabled: true
multicast-group: 1.2.3.4
multicast-port: 12345
multicast-timeout-seconds: 5
multicast-time-to-live: 10
trusted-interfaces:
- 10.10.1.*
- 10.10.2.*
tcp-ip:
enabled: false
connection-timeout-seconds: 123
required-member: dummy
member: dummy1,dummy2
interface: 127.0.0.10
members: dummy3,dummy4
member-list:
- dummy5
- dummy6
aws:
enabled: false
access-key: my-access-key
secret-key: my-secret-key
iam-role: dummy
# optional, default is us-east-1
region: us-west-1
# optional, default is ec2.amazonaws.com. If set, region shouldn't be set as it will override this property
host-header: ec2.amazonaws.com
# optional, only instances belonging to this group will be discovered, default will try all running instances
security-group-name: hazelcast-sg
tag-key: type
tag-value: hz-nodes
use-public-ip: true
gcp:
enabled: false
zones: us-east1-b,us-east1-c
azure:
enabled: false
client-id: CLIENT_ID
client-secret: CLIENT_SECRET
tenant-id: TENANT_ID
subscription-id: SUB_ID
cluster-id: HZLCAST001
group-name: GROUP-NAME
kubernetes:
enabled: false
namespace: MY-KUBERNETES-NAMESPACE
service-name: MY-SERVICE-NAME
service-label-name: MY-SERVICE-LABEL-NAME
service-label-value: MY-SERVICE-LABEL-VALUE
eureka:
enabled: false
self-registration: true
namespace: hazelcast
# discovery-strategies:
# node-filter:
# class: DummyFilterClass
# discovery-strategies:
# - class: DummyClass
# enabled: true
# properties:
# foo: bar
interfaces:
enabled: true
interfaces:
- 10.10.1.*
failure-detector:
icmp:
enabled: false
timeout-milliseconds: 1000
fail-fast-on-startup: true
interval-milliseconds: 1000
max-attempts: 2
parallel-mode: true
ttl: 255
member-address-provider:
enabled: false
class-name: DummyMemberAddressProvider
properties:
foo: bar
member-server-socket-endpoint-config:
outbound-ports:
- 33000-35000
- 37000,37001,37002,37003
- 38000,38500-38600
interfaces:
enabled: true
interfaces:
- 10.10.1.*
ssl:
enabled: true
factory-class-name: com.hazelcast.examples.MySSLContextFactory
properties:
foo: bar
socket-interceptor:
enabled: true
class-name: com.hazelcast.examples.MySocketInterceptor
properties:
foo: bar
socket-options:
buffer-direct: true
tcp-no-delay: true
keep-alive: true
connect-timeout-seconds: 64
send-buffer-size-kb: 25
receive-buffer-size-kb: 33
linger-seconds: 99
port:
port-count: 100
auto-increment: true
port: 5701
public-address: dummy
# If the address should be reused. See NetworkConfig.setReuseAddress for more information.
reuse-address: true
client-server-socket-endpoint-config:
outbound-ports:
- 38000,38500-38600
interfaces:
enabled: false
interfaces:
- 10.10.1.*
ssl:
enabled: true
factory-class-name: com.hazelcast.examples.MySSLContextFactory
properties:
foo: bar
socket-interceptor:
enabled: true
class-name: com.hazelcast.examples.MySocketInterceptor
properties:
foo: bar
port:
port-count: 100
auto-increment: true
port: 9999
public-address: 10.10.0.10
reuse-address: true
rest-server-socket-endpoint-config:
name: internal-server-socket
interfaces:
enabled: false
interfaces:
- 10.10.1.*
port:
auto-increment: false
port: 8080
public-address: 192.168.1.10
reuse-address: true
endpoint-groups:
WAN:
enabled: true
CLUSTER_READ:
enabled: true
CLUSTER_WRITE:
enabled: false
HEALTH_CHECK:
enabled: true
wan-endpoint-config:
endpoint-tokyo:
ssl:
enabled: true
factory-class-name: com.hazelcast.examples.MySSLContextFactory
properties:
foo: bar
endpoint-london:
symmetric-encryption:
enabled: true
algorithm: Algorithm
salt: thesalt
password: thepassword
iteration-count: 1000
wan-server-socket-endpoint-config:
wan-server-socket-config:
interfaces:
enabled: false
interfaces:
- 192.168.8.101
- 10.20.10.100
memcache-server-socket-endpoint-config:
name: memcache
port:
auto-increment: false
port-count: 10
port: 6000
#
# ===== HAZELCAST CP SUBSYSTEM CONFIGURATION =====
#
# Configuration element's name is "cp-subsystem".
#
# It has the following sub-elements:
# * "cp-member-count":
# Number of CP Members to initialize the CP Subsystem.
# It is 0 by default, meaning that the CP subsystem is disabled.
# The CP subsystem is enabled when a positive value is set.
# After the CP subsystem is initialized successfully, more CP members can
# be added at run-time and number of active CP members can go beyond
# the configured CP member count. Number of CP members can be smaller than
# total size of the Hazelcast cluster. For instance, you can run
# 5 CP members in a 20-member Hazelcast cluster.
# If set, must be greater than or equal to "group-size".
# * "group-size":
# Number of CP members to run CP groups. If set, it must be an odd
# number between 3 and 7. Otherwise, "cp-member-count" is respected.
# If set, must be smaller than or equal to "cp-member-count".
# * "session-time-to-live-seconds":
# Duration for a CP session to be kept alive after the last received
# heartbeat. The session will be closed if there is no new heartbeat
# this duration. Session TTL must be decided wisely. If a very low value is set,
# CP session of a Hazelcast instance can be closed prematurely if the instance
# temporarily loses connectivity to the CP subsystem because of a network
# partition or a GC pause. In such an occasion, all CP resources of this Hazelcast
# instance, such as FencedLock or ISemaphore, are released. On the other hand,
# if a very large value is set, CP resources can remain assigned to an actually
# crashed Hazelcast instance for too long and liveliness problems can occur.
# The CP subsystem offers an API, CPSessionManagementService, to deal with
# liveliness issues related to CP sessions. In order to prevent premature
# session expires, session TTL configuration can be set a relatively large value
# and CPSessionManagementService#forceCloseSession() can be manually called to
# close CP session of a crashed Hazelcast instance.
# Must be greater than "session-heartbeat-interval-seconds", and
# smaller than or equal to "missing-cp-member-auto-removal-seconds".
# * "session-heartbeat-interval-seconds":
# Interval for the periodically-committed CP session heartbeats.
# A CP session is started on a CP group with the first session-based
# request of a Hazelcast instance. After that moment, heartbeats are
# periodically committed to the CP group.
# Must be smaller than "session-time-to-live-seconds".
# * "missing-cp-member-auto-removal-seconds":
# Duration to wait before automatically removing a missing CP member
# from the CP subsystem. When a CP member leaves the cluster, it is not
# automatically removed from the CP subsystem, since it could be still
# alive and left the cluster because of a network partition.
# On the other hand, if a missing CP member is actually crashed,
# it creates a danger for its CP groups, because it will be still part of
# majority calculations. This situation could lead to losing majority of
# CP groups if multiple CP members leave the cluster over time.
# With the default configuration, missing CP members will be automatically
# removed from the CP subsystem after 4 hours. This feature is very useful
# in terms of fault tolerance when CP member count is also configured
# to be larger than group size. In this case, a missing CP member will be
# safely replaced in its CP groups with other available CP members
# in the CP subsystem. This configuration also implies that no network
# partition is expected to be longer than the configured duration.
# Must be greater than or equal to "session-time-to-live-seconds".
# If a missing CP member comes back alive after it is automatically
# removed from the CP subsystem with this feature, that CP member
# must be terminated manually.
# * "fail-on-indeterminate-operation-state":
# Offers a choice between at-least-once and at-most-once execution
# of the operations on top of the Raft consensus algorithm.
# It is disabled by default and offers at-least-once execution guarantee.
# If enabled, it switches to at-most-once execution guarantee.
# When you invoke an API method on a CP data structure proxy, it
# replicates an internal operation to the corresponding CP group. After
# this operation is committed to majority of this CP group by the Raft
# leader node, it sends a response for the public API call. If a failure
# causes loss of the response, then the calling side cannot determine if
# the operation is committed on the CP group or not. In this case, if this
# configuration is disabled, the operation is replicated again to the CP
# group, and hence could be committed multiple times. If it is enabled,
# the public API call fails with
# com.hazelcast.core.IndeterminateOperationStateException
#
# * "raft-algorithm":
# These parameters tune specific parameters of Hazelcast’s Raft consensus
# algorithm implementation and are only for power users.
#
# * "leader-election-timeout-in-millis":
# Leader election timeout in milliseconds. If a candidate cannot win
# majority of the votes in time, a new election round is initiated.
# * "leader-heartbeat-period-in-millis":
# Period in milliseconds for a leader to send heartbeat messages
# to its followers.
# * "max-missed-leader-heartbeat-count":
# Maximum number of missed leader heartbeats to trigger a new leader election.
# * "append-request-max-entry-count":
# Maximum number of entries that can be sent in a single batch of append
# entries request.
# * "commit-index-advance-count-to-snapshot":
# Number of new commits to initiate a new snapshot after the last snapshot.
# * "uncommitted-entry-count-to-reject-new-appends":
# Maximum number of uncommitted entries in the leader's Raft log before
# temporarily rejecting new requests of callers.
# * "append-request-backoff-timeout-in-millis":
# Timeout in milliseconds for append request backoff. After the leader
# sends an append request to a follower, it will not send a subsequent
# append request until the follower responds to the former request
# or this timeout occurs.
#
# * "semaphores":
# Configurations for CP Semaphore instances. The CP Semaphores can be configured
# with mappings under keys as their names. CP Semaphores have the following
# sub-element:
# * "jdk-compatible":
# Enables / disables JDK compatibility of the CP ISemaphore.
# When it is JDK compatible, just as in the Semaphore#release()
# method, a permit can be released without acquiring it first, because
# acquired permits are not bound to threads. However, there is no
# auto-cleanup of acquired permits upon Hazelcast server / client failures.
# If a permit holder fails, its permits must be released manually.
# When JDK compatibility is disabled, a HazelcastInstance must
# acquire permits before releasing them and it cannot release a permit
# that it has mot acquired. It means, you can acquire a permit
# from one thread and release it from another thread using the same
# HazelcastInstance, but not different HazelcastInstances. In this mode,
# acquired permits are automatically released upon failure of the holder
# HazelcastInstance. So there is a minor behavioral difference
# to the Semaphore#release() method.
# JDK compatibility is disabled by default.
#
# * "locks":
# Configurations for FencedLock instances. The FencedLocks can be configured
# with mappings under keys as their names. FencedLocks have the following
# sub-element:
# * "lock-acquire-limit":
# Maximum number of reentrant lock acquires. Once a caller acquires
# the lock this many times, it will not be able to acquire the lock again,
# until it makes at least one unlock() call.
# By default, no upper bound is set for the number of reentrant lock
# acquires, which means that once a caller acquires a FencedLock,
# all of its further lock() calls will succeed. However, for instance,
# if you set lock-acquire-limit to 2, once a caller acquires
# the lock, it will be able to acquire it once more, but its third lock()
# call will not succeed.
# If lock-acquire-limit is set to 1, then the lock becomes non-reentrant.
#
cp-subsystem:
cp-member-count: 10
group-size: 3
session-time-to-live-seconds: 60
session-heartbeat-interval-seconds: 5
missing-cp-member-auto-removal-seconds: 120
fail-on-indeterminate-operation-state: false
raft-algorithm:
leader-election-timeout-in-millis: 2000
leader-heartbeat-period-in-millis: 5000
max-missed-leader-heartbeat-count: 5
append-request-max-entry-count: 50
commit-index-advance-count-to-snapshot: 1000
uncommitted-entry-count-to-reject-new-appends: 100
append-request-backoff-timeout-in-millis: 100
semaphores:
sem1:
jdk-compatible: true
sem2:
jdk-compatible: false
locks:
lock1:
lock-acquire-limit: 1
lock2:
lock-acquire-limit: 2