Class RingbufferConfig
- All Implemented Interfaces:
NamedConfig
,UserCodeNamespaceAwareConfig<RingbufferConfig>
,DataSerializable
,IdentifiedDataSerializable
,com.hazelcast.nio.serialization.impl.Versioned
Ringbuffer
.
The RingBuffer is a replicated but not partitioned data-structure, so its content will be fully stored on a single member in the cluster and its backup in another member in the cluster.
-
Field Summary
Modifier and TypeFieldDescriptionstatic final int
Default value of asynchronous backup countstatic final int
Default value of capacity of the RingBuffer.static final InMemoryFormat
Default value for the in-memory format.static final int
Default value of synchronous backup countstatic final int
Default value for the time to live property.Fields inherited from interface com.hazelcast.config.UserCodeNamespaceAwareConfig
DEFAULT_NAMESPACE
-
Constructor Summary
ConstructorDescriptionRingbufferConfig
(RingbufferConfig config) Clones a RingbufferConfigRingbufferConfig
(String name) Creates a RingbufferConfig with the provided name.RingbufferConfig
(String name, RingbufferConfig config) Creates a new RingbufferConfig by cloning an existing config and overriding the name. -
Method Summary
Modifier and TypeMethodDescriptionfinal boolean
int
Gets the number of asynchronous backups.int
Gets the number of synchronous backups.int
Gets the capacity of the ringbuffer.int
Returns type identifier for this class.int
Returns DataSerializableFactory factory ID for this class.Returns the in-memory format.Gets theMergePolicyConfig
for this ringbuffer.getName()
Returns the name of the ringbuffer.Get the RingbufferStore (load and store ringbuffer items from/to a database) configuration.Returns the split brain protection name for operations.int
Gets the time to live in seconds.int
Returns the total number of backups: backupCount plus asyncBackupCount.Retrieve the User Code Deployment Namespace to be used forClassLoader
awareness during operations related to the structure associated with this configuration.final int
hashCode()
void
Reads fields from the input streamsetAsyncBackupCount
(int asyncBackupCount) Sets the number of asynchronous backups.setBackupCount
(int backupCount) Sets the number of synchronous backups.setCapacity
(int capacity) Sets the capacity of the ringbuffer.setInMemoryFormat
(InMemoryFormat inMemoryFormat) Sets the in-memory format.setMergePolicyConfig
(MergePolicyConfig mergePolicyConfig) Sets theMergePolicyConfig
for this ringbuffer.Sets the name of the ringbuffer.setRingbufferStoreConfig
(RingbufferStoreConfig ringbufferStoreConfig) Set the RingbufferStore (load and store ringbuffer items from/to a database) configuration.setSplitBrainProtectionName
(String splitBrainProtectionName) Sets the split brain protection name for operations.setTimeToLiveSeconds
(int timeToLiveSeconds) 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.setUserCodeNamespace
(String userCodeNamespace) Associates the provided Namespace Name with this structure forClassLoader
awareness.toString()
void
Writes object fields to output stream
-
Field Details
-
DEFAULT_CAPACITY
public static final int DEFAULT_CAPACITYDefault value of capacity of the RingBuffer.- See Also:
-
DEFAULT_SYNC_BACKUP_COUNT
public static final int DEFAULT_SYNC_BACKUP_COUNTDefault value of synchronous backup count- See Also:
-
DEFAULT_ASYNC_BACKUP_COUNT
public static final int DEFAULT_ASYNC_BACKUP_COUNTDefault value of asynchronous backup count- See Also:
-
DEFAULT_TTL_SECONDS
public static final int DEFAULT_TTL_SECONDSDefault value for the time to live property.- See Also:
-
DEFAULT_IN_MEMORY_FORMAT
Default value for the in-memory format.
-
-
Constructor Details
-
RingbufferConfig
public RingbufferConfig() -
RingbufferConfig
Creates a RingbufferConfig with the provided name.- Parameters:
name
- the name- Throws:
NullPointerException
- if name isnull
-
RingbufferConfig
Clones a RingbufferConfig- Parameters:
config
- the ringbuffer config to clone- Throws:
NullPointerException
- if config isnull
-
RingbufferConfig
Creates a new RingbufferConfig by cloning an existing config and overriding the name.- Parameters:
name
- the new nameconfig
- the config- Throws:
NullPointerException
- if name or config isnull
-
-
Method Details
-
setName
Sets the name of the ringbuffer.- Specified by:
setName
in interfaceNamedConfig
- Parameters:
name
- the name of the ringbuffer- Returns:
- the updated
RingbufferConfig
- Throws:
IllegalArgumentException
- if name isnull
or an empty string
-
getName
Returns the name of the ringbuffer.- Specified by:
getName
in interfaceNamedConfig
- Returns:
- the name of the ringbuffer
-
getCapacity
public int getCapacity()Gets the capacity of the ringbuffer.The capacity is the total number of items in the ringbuffer. The items will remain in the ringbuffer, but the oldest items will eventually be overwritten by the newest items.
- Returns:
- the capacity
-
setCapacity
Sets the capacity of the ringbuffer.- Parameters:
capacity
- the capacity- Returns:
- the updated Config
- Throws:
IllegalArgumentException
- if capacity smaller than 1- See Also:
-
getBackupCount
public int getBackupCount()Gets the number of synchronous backups.- Returns:
- number of synchronous backups
-
setBackupCount
Sets the number of synchronous backups.- Parameters:
backupCount
- the number of synchronous backups to set- Returns:
- the updated SemaphoreConfig
- Throws:
IllegalArgumentException
- if backupCount smaller than 0, or larger than the maximum number of backup or the sum of the backups and async backups is larger than the maximum number of backups- See Also:
-
getAsyncBackupCount
public int getAsyncBackupCount()Gets the number of asynchronous backups.- Returns:
- the number of asynchronous backups
-
setAsyncBackupCount
Sets the number of asynchronous backups. 0 means no backups.- Parameters:
asyncBackupCount
- the number of asynchronous synchronous backups to set- Returns:
- the updated SemaphoreConfig
- Throws:
IllegalArgumentException
- if asyncBackupCount smaller than 0, or larger than the maximum number of backup or the sum of the backups and async backups is larger than the maximum number of backups- See Also:
-
getTotalBackupCount
public int getTotalBackupCount()Returns the total number of backups: backupCount plus asyncBackupCount.- Returns:
- the total number of backups: backupCount plus asyncBackupCount
-
getTimeToLiveSeconds
public int getTimeToLiveSeconds()Gets the time to live in seconds.- Returns:
- the time to live in seconds or 0 if the items don't expire
-
setTimeToLiveSeconds
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
timeToLiveSeconds
are removed from the ringbuffer on the next ringbuffer operation (read or write).Time to live can be disabled by setting
timeToLiveSeconds
to 0. It means that items won't get removed because they expire. They may only be overwritten. WhentimeToLiveSeconds
is disabled and after the tail does a full loop in the ring, the ringbuffer size will always be equal to the capacity.The
timeToLiveSeconds
can be any integer between 0 andInteger.MAX_VALUE
. 0 means infinite. The default is 0.- Parameters:
timeToLiveSeconds
- the time to live period in seconds- Returns:
- the updated RingbufferConfig
- Throws:
IllegalArgumentException
- if timeToLiveSeconds smaller than 0
-
getInMemoryFormat
Returns the in-memory format.The in-memory format controls the format of the stored item in the ringbuffer:
InMemoryFormat.OBJECT
: the item is stored in deserialized format (a regular object)InMemoryFormat.BINARY
: the item is stored in serialized format (a binary blob)
The default is binary. The object InMemoryFormat 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.
-
setInMemoryFormat
Sets the in-memory format.The in-memory format controls the format of the stored item in the ringbuffer:
InMemoryFormat.OBJECT
: the item is stored in deserialized format (a regular object)InMemoryFormat.BINARY
: the item is stored in serialized format (a binary blob)
The default is binary. The object InMemoryFormat 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.
- Parameters:
inMemoryFormat
- the new in memory format- Returns:
- the updated Config
- Throws:
NullPointerException
- if inMemoryFormat isnull
IllegalArgumentException
- ifInMemoryFormat.NATIVE
in-memory format is selected
-
getRingbufferStoreConfig
Get the RingbufferStore (load and store ringbuffer items from/to a database) configuration.- Returns:
- the ringbuffer store configuration
-
setRingbufferStoreConfig
Set the RingbufferStore (load and store ringbuffer items from/to a database) configuration.- Parameters:
ringbufferStoreConfig
- set the RingbufferStore configuration to this configuration- Returns:
- the ringbuffer configuration
-
getSplitBrainProtectionName
Returns the split brain protection name for operations.- Returns:
- the split brain protection name
-
setSplitBrainProtectionName
Sets the split brain protection name for operations.- Parameters:
splitBrainProtectionName
- the split brain protection name- Returns:
- the updated configuration
-
getMergePolicyConfig
Gets theMergePolicyConfig
for this ringbuffer.- Returns:
- the
MergePolicyConfig
for this ringbuffer
-
setMergePolicyConfig
Sets theMergePolicyConfig
for this ringbuffer.- Returns:
- the ringbuffer configuration
-
getUserCodeNamespace
Retrieve the User Code Deployment Namespace to be used forClassLoader
awareness during operations related to the structure associated with this configuration.- Specified by:
getUserCodeNamespace
in interfaceUserCodeNamespaceAwareConfig<RingbufferConfig>
- Returns:
- Namespace Name for use with the
UserCodeNamespaceService
, ornull
if there is no User Code Namespace to associate with.
-
setUserCodeNamespace
Associates the provided Namespace Name with this structure forClassLoader
awareness.The behaviour of setting this to
null
is outlined in the documentation forUserCodeNamespaceAwareConfig.DEFAULT_NAMESPACE
.- Specified by:
setUserCodeNamespace
in interfaceUserCodeNamespaceAwareConfig<RingbufferConfig>
- Parameters:
userCodeNamespace
- The ID of the Namespace to associate with this structure.- Returns:
- the updated
RingbufferConfig
instance - Since:
- 5.4
-
toString
-
getFactoryId
public int getFactoryId()Description copied from interface:IdentifiedDataSerializable
Returns DataSerializableFactory factory ID for this class.- Specified by:
getFactoryId
in interfaceIdentifiedDataSerializable
- Returns:
- factory ID
-
getClassId
public int getClassId()Description copied from interface:IdentifiedDataSerializable
Returns type identifier for this class. It should be unique per DataSerializableFactory.- Specified by:
getClassId
in interfaceIdentifiedDataSerializable
- Returns:
- type ID
-
writeData
Description copied from interface:DataSerializable
Writes object fields to output stream- Specified by:
writeData
in interfaceDataSerializable
- Parameters:
out
- output- Throws:
IOException
- if an I/O error occurs. In particular, anIOException
may be thrown if the output stream has been closed.
-
readData
Description copied from interface:DataSerializable
Reads fields from the input stream- Specified by:
readData
in interfaceDataSerializable
- Parameters:
in
- input- Throws:
IOException
- if an I/O error occurs. In particular, anIOException
may be thrown if the input stream has been closed.
-
equals
-
hashCode
public final int hashCode()
-