Notifiche di eventi a livello di cache
Le notifiche degli eventi a livello di cache vengono attivate quando i dati vengono aggiunti, aggiornati o rimossi nella cache da client, caricatore, origine di backup, ecc. Per impostazione predefinita, gli eventi a livello di cache sono disabilitati (ad eccezione dell'operazione di svuotamento della cache) e possono essere abilitati tramite NCache Centro di gestione.
È possibile registrare gli eventi a livello di cache utilizzando RegisterCacheNotification
specificando la richiamata implementata, EventType
e EventFilter
. Qui descriviamo come registrare e annullare la registrazione degli eventi a livello di cache.
Note:
L'applicazione non sarà in grado di ricevere eventi a meno che non si registri nella cache utilizzando la chiamata API di registrazione eventi specifica.
Prerequisiti
- Per conoscere i prerequisiti standard richiesti per lavorare con all NCache Per le funzionalità lato client fare riferimento alla pagina specificata Prerequisiti dell'API lato client.
- Assicurati che abilita le notifiche degli eventi usando il NCache Centro Direzionale.
- Per i dettagli dell'API, fare riferimento a: ICache, RegisterCacheNotifica, Tipo di evento, EventDataFilter, UnRegisterCacheNotifica, CacheEventDescriptor, CacheDataNotification Callback.
Implementare la richiamata per le notifiche di eventi
È possibile implementare una richiamata per eventi in cui EventType
è specificato secondo la logica dell'utente per ItemAdded
, ItemUpdated
e ItemRemoved
eventi.
L'esempio seguente implementa un metodo di callback per le notifiche della cache con determinati tipi di eventi.
public void OnCacheDataModification(string key, CacheEventArg args)
{
switch (args.EventType)
{
case EventType.ItemAdded:
Console.WriteLine($"Item with Key '{key}' has been added to cache '{args.CacheName}'");
break;
case EventType.ItemUpdated:
Console.WriteLine($"Item with Key '{key}' has been updated in the cache '{args.CacheName}'");
// Item can be used if EventDataFilter is DataWithMetadata or Metadata
if (args.Item != null)
{
Product updatedProduct = args.Item.GetValue<Product>();
Console.WriteLine($"Updated Item is a Product having name '{updatedProduct.ProductName}', price '{updatedProduct.UnitPrice}', and quantity '{updatedProduct.QuantityPerUnit}'");
}
break;
case EventType.ItemRemoved:
Console.WriteLine($"Item with Key '{key}' has been removed from the cache '{args.CacheName}'");
break;
}
}
Note:
Per garantire che l'operazione sia a prova di errore, si consiglia di gestire eventuali potenziali eccezioni all'interno dell'applicazione, come spiegato in Gestione dei guasti.
Registra notifiche cache
Per registrare le notifiche a livello di cache, viene creato un metodo di destinazione che può avere più callback. Il metodo contiene un tipo di evento e un filtro eventi. IL EventType
viene regolato in base al tipo di operazione di cui l'utente desidera ricevere le notifiche. Il EventDataFilter
può assumere uno dei tre valori possibili: None
, MetaData
, o DataWithMetadata
. Gli eventi verranno notificati ai loro ascoltatori appropriati e gestiti come implementati dall'utente.
Consigli
I EventDataFilter
deve essere impostato con cura per evitare un consumo non necessario della larghezza di banda della rete.
L'esempio seguente crea un metodo che registra i callback per le notifiche della cache con determinati tipi di eventi.
Note:
If EventDataFilter
non è specificato, EventDataFilter.None
viene impostato automaticamente.
public void RegisterCacheNotificationsForAllOperations()
{
// create CacheDataNotificationCallback object
var dataNotificationCallback = new CacheDataNotificationCallback(OnCacheDataModification);
// Register cache notification with "ItemAdded" EventType and
// EventDataFilter "None" which means only keys will be returned
CacheEventDescriptor eventDescriptor = cache.MessagingService.RegisterCacheNotification(dataNotificationCallback, EventType.ItemAdded | EventType.ItemUpdated | EventType.ItemRemoved, EventDataFilter.None);
if (eventDescriptor.IsRegistered)
{
Console.WriteLine("Cache level notifications registered successfully");
}
}
Annulla la registrazione degli eventi a livello di cache
È inoltre possibile annullare la registrazione di una notifica di eventi a livello di cache precedentemente registrata se non è più necessaria utilizzando il UnRegisterCacheNotification
metodo. Utilizzando questo metodo, il CacheEventDescriptor
deve essere specificato anche per annullare la registrazione delle notifiche. Per Java e Node.js, removeCacheDataModificationListener
viene utilizzato per annullare la registrazione delle notifiche di eventi.
L'esempio seguente mostra come annullare la registrazione delle notifiche utilizzando questo metodo.
// Unregister Notifications using the EventDescriptor
cache.MessagingService.UnRegisterCacheNotification(eventDescriptor);
Note:
L'utilizzo degli eventi a livello di cache potrebbe influire sulle prestazioni dell'applicazione poiché attiva notifiche per tutte le operazioni specificate eseguite sull'intero set di dati della cache. Eventi a livello di oggetto è l'approccio consigliato per evitare questo problema.
Risorse addizionali
NCache fornisce un'applicazione di esempio per le notifiche di eventi a livello di cache GitHub.
Vedere anche
.NETTO: Alachisoft.NCache.Eventi.di.runtime spazio dei nomi.
Giava: com.alachisoft.ncache.eventi spazio dei nomi.
Node.js: EventCacheItem classe.
Pitone: ncache.runtime.caching.events classe.