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
FieldsModifier and TypeFieldDescriptionstatic final intDefault value of asynchronous backup countstatic final intDefault value of capacity of the RingBuffer.static final InMemoryFormatDefault value for the in-memory format.static final intDefault value of synchronous backup countstatic final intDefault value for the time to live property.Fields inherited from interface com.hazelcast.config.UserCodeNamespaceAwareConfig
DEFAULT_NAMESPACE -
Constructor Summary
ConstructorsConstructorDescriptionRingbufferConfig(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 booleanintGets the number of asynchronous backups.intGets the number of synchronous backups.intGets the capacity of the ringbuffer.intReturns type identifier for this class.intReturns DataSerializableFactory factory ID for this class.Returns the in-memory format.Gets theMergePolicyConfigfor 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.intGets the time to live in seconds.intReturns the total number of backups: backupCount plus asyncBackupCount.Retrieve the User Code Deployment Namespace to be used forClassLoaderawareness during operations related to the structure associated with this configuration.final inthashCode()voidReads 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 theMergePolicyConfigfor 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 forClassLoaderawareness.toString()voidWrites 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:
setNamein interfaceNamedConfig- Parameters:
name- the name of the ringbuffer- Returns:
- the updated
RingbufferConfig - Throws:
IllegalArgumentException- if name isnullor an empty string
-
getName
Returns the name of the ringbuffer.- Specified by:
getNamein 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
timeToLiveSecondsare removed from the ringbuffer on the next ringbuffer operation (read or write).Time to live can be disabled by setting
timeToLiveSecondsto 0. It means that items won't get removed because they expire. They may only be overwritten. WhentimeToLiveSecondsis disabled and after the tail does a full loop in the ring, the ringbuffer size will always be equal to the capacity.The
timeToLiveSecondscan 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 isnullIllegalArgumentException- ifInMemoryFormat.NATIVEin-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 theMergePolicyConfigfor this ringbuffer.- Returns:
- the
MergePolicyConfigfor this ringbuffer
-
setMergePolicyConfig
Sets theMergePolicyConfigfor this ringbuffer.- Returns:
- the ringbuffer configuration
-
getUserCodeNamespace
Retrieve the User Code Deployment Namespace to be used forClassLoaderawareness during operations related to the structure associated with this configuration.- Specified by:
getUserCodeNamespacein interfaceUserCodeNamespaceAwareConfig<RingbufferConfig>- Returns:
- Namespace Name for use with the
UserCodeNamespaceService, ornullif there is no User Code Namespace to associate with.
-
setUserCodeNamespace
Associates the provided Namespace Name with this structure forClassLoaderawareness.The behaviour of setting this to
nullis outlined in the documentation forUserCodeNamespaceAwareConfig.DEFAULT_NAMESPACE.- Specified by:
setUserCodeNamespacein interfaceUserCodeNamespaceAwareConfig<RingbufferConfig>- Parameters:
userCodeNamespace- The ID of the Namespace to associate with this structure.- Returns:
- the updated
RingbufferConfiginstance - Since:
- 5.4
-
toString
-
getFactoryId
public int getFactoryId()Description copied from interface:IdentifiedDataSerializableReturns DataSerializableFactory factory ID for this class.- Specified by:
getFactoryIdin interfaceIdentifiedDataSerializable- Returns:
- factory ID
-
getClassId
public int getClassId()Description copied from interface:IdentifiedDataSerializableReturns type identifier for this class. It should be unique per DataSerializableFactory.- Specified by:
getClassIdin interfaceIdentifiedDataSerializable- Returns:
- type ID
-
writeData
Description copied from interface:DataSerializableWrites object fields to output stream- Specified by:
writeDatain interfaceDataSerializable- Parameters:
out- output- Throws:
IOException- if an I/O error occurs. In particular, anIOExceptionmay be thrown if the output stream has been closed.
-
readData
Description copied from interface:DataSerializableReads fields from the input stream- Specified by:
readDatain interfaceDataSerializable- Parameters:
in- input- Throws:
IOException- if an I/O error occurs. In particular, anIOExceptionmay be thrown if the input stream has been closed.
-
equals
-
hashCode
public final int hashCode()
-