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