CacheWriterFactory Attributes
The CacheWriterFactory supports the following attributes:
All modes
write-mode [write-through | write-behind] - Whether to run in write-behind or write-through mode. The default is write-through.
write-through mode only
notifyListenersOnException - Whether to notify listeners when an exception occurs on a store operation. Defaults to false. If using cache replication, set this attribute to “true” to ensure that changes to the underlying store are replicated.
write-behind mode only
writeBehindMaxQueueSize - The maximum number of elements allowed per queue, or per bucket (if the queue has multiple buckets). “0” means unbounded (default). When an attempt to add an element is made, the queue size (or bucket size) is checked, and if full then the operation is blocked until the size drops by one. Note that elements or a batch currently being processed (and coalesced elements) are not included in the size value. Programmatically, this attribute can be set with:
net.sf.ehcache.config.CacheWriterConfiguration.setWriteBehindMaxQueueSize()
writeBehindConcurrency - The number of thread-bucket pairs on the node for the given cache (default is 1). Each thread uses the settings configured for write-behind. For example, if
rateLimitPerSecond is set to 100, each thread-bucket pair will perform up to 100 operations per second. In this case, setting
writeBehindConcurrency="4" means that up to 400 operations per second will occur on the node for the given cache. Programmatically, this attribute can be set with:
net.sf.ehcache.config.CacheWriterConfiguration.setWriteBehindConcurrency()
maxWriteDelaySeconds - The maximum number of seconds to wait before writing behind. Defaults to 0. If set to a value greater than 0, it permits operations to build up in the queue to enable effective coalescing and batching optimizations.
rateLimitPerSecond - The maximum number of store operations to allow per second.
writeCoalescing - Whether to use write coalescing. Defaults to false. When set to true, if multiple operations on the same key are present in the write-behind queue, then only the latest write is done (the others are redundant). This can dramatically reduce load on the underlying resource.
writeBatching - Whether to batch write operations. Defaults to false. If set to true, storeAll and deleteAll will be called rather than store and delete being called for each key. Resources such as databases can perform more efficiently if updates are batched to reduce load.
writeBatchSize - The number of operations to include in each batch. Defaults to 1. If there are less entries in the write-behind queue than the batch size, the queue length size is used. Note that batching is split across operations. For example, if the batch size is 10 and there were 5 puts and 5 deletes, the CacheWriter is invoked. It does not wait for 10 puts or 10 deletes.
retryAttempts - The number of times to attempt writing from the queue. Defaults to 1.
retryAttemptDelaySeconds - The number of seconds to wait before retrying.