What you could want is observing what happens to your cache, probably something like using the observer pattern.
Doing that with Coherence is pretty easy, we need to define a class extending AbstractMapListener, to specify what we want actually do in case of insertion, editing or deletion on the cache; than we call addMapListener() on our cache passing an instance of such class, and basically we are done.
A very simple example of a map listener could be:
public class MyCacheListener extends AbstractMapListener { @Override public void entryInserted(MapEvent event) { System.out.println("*** Inserted: " + event); } @Override public void entryUpdated(MapEvent event) { System.out.println("*** Updated: " + event); } @Override public void entryDeleted(MapEvent event) { System.out.println("*** Deleted: " + event); } }It is not a fancy implementation, it just dumps to standard output the event signaling the item affected in the cache, but starting from this we can create a more useful functionality.
The class that works with the cache would probably implement a method like this:
public void observe() { cache.addMapListener(new MyCacheListener()); }And this is a piece of code that would start observing on a Coherence cache:
CacheObserver cohCli = new CacheObserver(); // 1 cohCli.observe(); cohCli.checkPut("key", "value"); // 2 cohCli.getCheck("key", "value"); cohCli.checkPut("key", "change"); cohCli.checkRemove("key"); // ...1. In my test code, CacheObserver extends the SimpleCache class seen in the previous post adding the observe() method seen here above.
2. Any time a change is done in the cache, the observer would dump the event generated to the screen.
No comments:
Post a Comment