De nos jours, de nombreuses applications doivent partager des données entre elles au moment de l'exécution de manière asynchrone. De plus, les bases de données relationnelles ne fournissent pas de mécanisme efficace de notification d'événements et leurs performances et leur évolutivité constituent une préoccupation majeure.
Les files d'attente de messages fournissent des messages séquencés et garantissent la livraison des messages, mais elles présentent également des problèmes de performances et d'évolutivité.
La meilleure façon consiste à utiliser une plate-forme de messagerie de type bus de messages, rapide et évolutive, qui assure également une coordination du partage de données de type producteur/consommateur. NCache est un cache distribué extrêmement rapide et évolutif et fournit également une capacité de messagerie de type bus de messages simple et puissante.
Avec NCache messagerie, vous pouvez effectuer les opérations suivantes :
Toutes les applications (qu'elles soient .NET ou Java) connectées à NCache peut l'utiliser comme plate-forme de messagerie et propager des événements à travers elle à d'autres applications. Ou, ils peuvent demander au cache de les avertir lorsque certaines choses se produisent dans le cache.
Les événements au niveau du cache sont déclenchés chaque fois que quelque chose est ajouté, mis à jour ou supprimé ou si le cache est effacé du cache. Par défaut, ces événements sont désactivés car ils peuvent devenir très bavards. Mais, vous pouvez activer tout ou partie d'entre eux dans la configuration du cache, puis demander à votre application de fournir des fonctions de rappel pour NCache so NCache appelle ces rappels lorsque ces événements se produisent. Vous trouverez ci-dessous le type de rappels que vous pouvez enregistrer.
CacheEventListener listener = new CacheEventListener();
EnumSet<EventType> _eventType = EnumSet.noneOf(EventType.class);
_eventType.add(EventType.ItemAdded);
_eventType.add(EventType.ItemUpdated);
_eventType.add(EventType.ItemRemoved);
CacheEventDescriptor descripter = _cache.addCacheDataModificationListener(listener,
_eventType, EventDataFilter.None);
Ces événements sont déclenchés lors de mises à jour ou de suppressions d'éléments spécifiques, mais uniquement si un ou plusieurs clients ont enregistré des rappels pour eux. Vous trouverez ci-dessous les événements et les rappels que vous pouvez enregistrer.
CacheEventListener listener = new CacheEventListener();
EnumSet<EventType> _eventType = EnumSet.noneOf(EventType.class);
_eventType.add(EventType.ItemUpdated);
_eventType.add(EventType.ItemRemoved);
_cache.addCacheDataModificationListener ("Key:1", listener,
_eventType, EventDataFilter.None);
La requête continue est une fonctionnalité puissante de NCache qui vous permet d'enregistrer une requête de type SQL avec le cache et également de spécifier pour quels événements souhaitez-vous que vos rappels soient appelés par NCache.
NCache crée ensuite une requête continue dans le cluster de cache et surveille toutes les opérations d'ajout, de mise à jour et de suppression pour voir si elles modifient les éléments mis en cache correspondant à ces critères de requête continue. Si oui, alors NCache en informe votre application cliente.
Vous trouverez ci-dessous les événements auxquels vous pouvez vous inscrire.
ContinuousQuery cQuery1 = new ContinuousQuery(qry, indexTable);
ContinuousQueryListener cqListener = new ContinuousQueryListener();
EnumSet _eventType = EnumSet.noneOf(EventType.class);
_eventType.add(EventType.ItemAdded);
_eventType.add(EventType.ItemUpdated);
_eventType.add(EventType.ItemRemoved);
cQuery1.addDataModificationListener(cqListener, _eventType,
EventDataFilter.DataWithMetaData);
NCache permet à vos applications de se coordonner avec d'autres dans un scénario producteur/consommateur ou publication/abonnement. Une application produit des données, puis déclenche un événement personnalisé dans NCache messagerie et une ou plusieurs applications attendent de recevoir cet événement.
Voici comment votre application s'enregistre pour recevoir ces événements personnalisés.
public void OnApplicationEvent(object notifId, object data)
{
...
}
_cache.CustomEvent += new CustomEventCallback(this.OnApplicationEvent);
Et voici comment votre application déclenche cet événement personnalisé dans NCache Messagerie.
_cache.RaiseCustomEvent("NotificationID", DateTime.Now);