Ce contenu n'est pas disponible dans la langue sélectionnée.
12.2. Listener Notifications
Each cache event triggers a notification that is dispatched to listeners. A listener is a simple POJO annotated with
@Listener. A Listenable is an interface that denotes that the implementation can have listeners attached to it. Each listener is registered using methods defined in the Listenable.
A listener can be attached to both the cache and Cache Manager to allow them to receive cache-level or cache manager-level notifications.
12.2.1. About Cache-level Notifications Copier lienLien copié sur presse-papiers!
Copier lienLien copié sur presse-papiers!
In Red Hat JBoss Data Grid, cache-level events occur on a per-cache basis, and are global and cluster-wide. Examples of cache-level events include the addition, removal and modification of entries, which trigger notifications to listeners registered on the relevant cache.
12.2.2. Cache Manager-level Notifications Copier lienLien copié sur presse-papiers!
Copier lienLien copié sur presse-papiers!
Examples of events that occur in Red Hat JBoss Data Grid at the cache manager-level are:
- Nodes joining or leaving a cluster;
- The starting and stopping of caches
Cache manager-level events are located globally and used cluster-wide, but are restricted to events within caches created by a single cache manager.
12.2.3. About Synchronous and Asynchronous Notifications Copier lienLien copié sur presse-papiers!
Copier lienLien copié sur presse-papiers!
By default, notifications in Red Hat JBoss Data Grid are dispatched in the same thread that generates the event. Therefore the listener must be written in a way that does not block or prevent the thread's progression.
Alternatively, the listener can be annotated as asynchronous, which dispatches notifications in a separate thread and prevents blocking the operations of the original thread.
Annotate listeners using the following:
@Listener (sync = false)
public class MyAsyncListener { .... }
@Listener (sync = false)
public class MyAsyncListener { .... }
Use the
<asyncListenerExecutor/> element in the configuration file to tune the thread pool that is used to dispatch asynchronous notifications.