Package org.atmosphere.cache
Class BoundedMemoryCache
java.lang.Object
org.atmosphere.cache.BoundedMemoryCache
- All Implemented Interfaces:
BroadcasterCache,AtmosphereConfigAware
A bounded, in-memory
BroadcasterCache that stores recent broadcast
messages per client UUID. Messages are automatically evicted when the cache
exceeds its maximum size or when entries are older than the configured TTL.
This implementation is suitable for applications that need message replay on reconnect (e.g., AI chat conversation history, real-time collaboration). For distributed deployments, use a Redis-backed cache.
Configuration
org.atmosphere.cache.maxSize— max messages per broadcaster (default 1000)org.atmosphere.cache.ttlSeconds— message TTL in seconds (default 3600)
- Since:
- 4.0.8
-
Field Summary
Fields inherited from interface org.atmosphere.cpr.BroadcasterCache
DEFAULT, NULL -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionAdd aBroadcasterCacheListeneraddToCache(String broadcasterId, String uuid, BroadcastMessage message) Start tracking messages associated withAtmosphereResourcefrom the cache.cacheCandidate(String broadcasterId, String uuid) Add aAtmosphereResource.uuid()to the list of activeAtmosphereResourceMessage will be cached for the resource associated with the uuid.voidcleanup()Clean resources associated with this instance.clearCache(String broadcasterId, String uuid, CacheMessage cacheMessage) Remove the previously cached message.voidconfigure(AtmosphereConfig config) Configure an AtmosphereFramework object.excludeFromCache(String broadcasterId, AtmosphereResource r) Allow an application to exclude, or block, anAtmosphereResourceto received cached message.inspector(BroadcasterCacheInspector interceptor) Add aBroadcasterCacheInspectorthat will be invoked before a message gets added to the cache.Remove aBroadcasterCacheListenerretrieveFromCache(String broadcasterId, String uuid) Retrieve messages associated withAtmosphereResource.intReturns the current number of cached messages for the given broadcaster.voidstart()This method is invoked when the Broadcaster is started.voidstop()This method is invoked when the Broadcaster is stopped.intReturns the total number of cached messages across all broadcasters.
-
Constructor Details
-
BoundedMemoryCache
public BoundedMemoryCache()
-
-
Method Details
-
configure
Description copied from interface:AtmosphereConfigAwareConfigure an AtmosphereFramework object.- Specified by:
configurein interfaceAtmosphereConfigAware- Parameters:
config-AtmosphereConfig
-
start
public void start()Description copied from interface:BroadcasterCacheThis method is invoked when the Broadcaster is started.- Specified by:
startin interfaceBroadcasterCache
-
stop
public void stop()Description copied from interface:BroadcasterCacheThis method is invoked when the Broadcaster is stopped.- Specified by:
stopin interfaceBroadcasterCache
-
cleanup
public void cleanup()Description copied from interface:BroadcasterCacheClean resources associated with this instance. This method is useful when ExecutorServices are shared and some future must be cancelled. This method will always be invoked when aBroadcastergets destroyed.- Specified by:
cleanupin interfaceBroadcasterCache
-
addToCache
Description copied from interface:BroadcasterCacheStart tracking messages associated withAtmosphereResourcefrom the cache.- Specified by:
addToCachein interfaceBroadcasterCache- Parameters:
broadcasterId- The associated}invalid @link
{@link Broadcaster#addAtmosphereResource(AtmosphereResource).getIDuuid-AtmosphereResource.uuid()message-BroadcastMessage.- Returns:
- The
CacheMessage
-
retrieveFromCache
Description copied from interface:BroadcasterCacheRetrieve messages associated withAtmosphereResource.- Specified by:
retrieveFromCachein interfaceBroadcasterCache- Parameters:
broadcasterId- The associated}invalid @link
{@link org.atmosphere.cpr.Broadcaster#addAtmosphereResource(org.atmosphere.cpr.AtmosphereResource).getIDuuid-AtmosphereResource- Returns:
- a
Listof messages (String).
-
clearCache
Description copied from interface:BroadcasterCacheRemove the previously cached message.- Specified by:
clearCachein interfaceBroadcasterCache- Parameters:
broadcasterId- TheBroadcaster.getID()uuid- anAtmosphereResource.uuid()cacheMessage- theCacheMessage
-
excludeFromCache
Description copied from interface:BroadcasterCacheAllow an application to exclude, or block, anAtmosphereResourceto received cached message. No new message will get sent to this client except the ones already cached.- Specified by:
excludeFromCachein interfaceBroadcasterCache- Parameters:
broadcasterId- TheBroadcaster.getID()r- anAtmosphereResource- Returns:
- this
-
cacheCandidate
Description copied from interface:BroadcasterCacheAdd aAtmosphereResource.uuid()to the list of activeAtmosphereResourceMessage will be cached for the resource associated with the uuid.- Specified by:
cacheCandidatein interfaceBroadcasterCache- Parameters:
broadcasterId- TheBroadcaster.getID()uuid- anAtmosphereResource.uuid()- Returns:
- this
-
inspector
Description copied from interface:BroadcasterCacheAdd aBroadcasterCacheInspectorthat will be invoked before a message gets added to the cache.- Specified by:
inspectorin interfaceBroadcasterCache- Parameters:
interceptor- an instance ofBroadcasterCacheInspector- Returns:
- this
-
addBroadcasterCacheListener
Description copied from interface:BroadcasterCacheAdd aBroadcasterCacheListener- Specified by:
addBroadcasterCacheListenerin interfaceBroadcasterCache- Parameters:
l- aBroadcasterCacheListener- Returns:
- this
-
removeBroadcasterCacheListener
Description copied from interface:BroadcasterCacheRemove aBroadcasterCacheListener- Specified by:
removeBroadcasterCacheListenerin interfaceBroadcasterCache- Parameters:
l- aBroadcasterCacheListener- Returns:
- this
-
size
Returns the current number of cached messages for the given broadcaster. -
totalSize
public int totalSize()Returns the total number of cached messages across all broadcasters.
-