Notificaciones de eventos de nivel de caché
Las notificaciones de eventos a nivel de caché se activan cuando se agregan, actualizan o eliminan datos en el caché de los clientes, el cargador, la fuente de respaldo, etc. De forma predeterminada, los eventos de nivel de caché están deshabilitados (excepto para la operación de borrado de caché) y se pueden habilitar a través del NCache Centro de Gestión.
El evento de nivel de caché se puede registrar usando RegisterCacheNotification
especificando la devolución de llamada implementada, EventType
y EventFilter
. Aquí, describimos cómo puede registrar y cancelar el registro de eventos de nivel de caché.
Note
La aplicación no podrá recibir eventos a menos que se registre en el caché mediante la llamada API de registro de eventos específica.
Requisitos previos
- Para obtener información sobre los requisitos previos estándar necesarios para trabajar con todos NCache características del lado del cliente, consulte la página proporcionada en Requisitos previos de la API del lado del cliente.
- Asegúrese de habilitar notificaciones de eventos usando el NCache Centro de Gestión.
- Para obtener detalles de la API, consulte: Dolor, RegistroCachéNotificación, Tipo de evento, Filtro de datos de evento, UnRegisterCacheNotificación, CacheEventDescriptorCacheEventDescriptor, CacheDataNotificationCallback.
Implementar devolución de llamada para notificaciones de eventos
Puede implementar una devolución de llamada para eventos donde EventType
se especifica de acuerdo con la lógica del usuario para ItemAdded
, ItemUpdated
y ItemRemoved
eventos.
El siguiente ejemplo implementa un método de devolución de llamada para notificaciones de caché con ciertos tipos de eventos.
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
Para garantizar que la operación sea a prueba de fallas, se recomienda manejar cualquier posible excepción dentro de su aplicación, como se explica en Manejo de fallas.
Registrar notificaciones de caché
Para registrar notificaciones a nivel de caché, se crea un método de destino que puede tener múltiples devoluciones de llamada. El método contiene un tipo de evento y un filtro de evento. El EventType
se ajusta de acuerdo al tipo de operación cuyas notificaciones desea el usuario. los EventDataFilter
puede tener uno de los tres valores posibles: None
, MetaData
o DataWithMetadata
. Los eventos se notificarán a sus oyentes apropiados y se manejarán según lo implemente el usuario.
Importante:
El EventDataFilter
debe configurarse cuidadosamente para evitar el consumo innecesario de ancho de banda de la red.
El siguiente ejemplo crea un método que registra devoluciones de llamada para notificaciones de caché con ciertos tipos de eventos.
Note
If EventDataFilter
no está especificado, EventDataFilter.None
se establece automáticamente.
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");
}
}
Anular registro de eventos de nivel de caché
Las notificaciones de eventos de nivel de caché previamente registradas también se pueden cancelar si ya no son necesarias usando el UnRegisterCacheNotification
método. Usando este método, el CacheEventDescriptor
también debe especificarse para cancelar el registro de las notificaciones. Para Java y Node.js, removeCacheDataModificationListener
se utiliza para cancelar el registro de las notificaciones de eventos.
El siguiente ejemplo muestra cómo anular el registro de notificaciones utilizando este método.
// Unregister Notifications using the EventDescriptor
cache.MessagingService.UnRegisterCacheNotification(eventDescriptor);
Note
El uso de eventos de nivel de caché puede afectar el rendimiento de su aplicación, ya que activa notificaciones para todas las operaciones especificadas realizadas en todo el conjunto de datos de caché. Eventos de nivel de artículo es el enfoque recomendado para evitar este problema.
Recursos adicionales
NCache proporciona una aplicación de muestra para notificaciones de eventos de nivel de caché en GitHub.
Vea también
.NETO: Alachisoft.NCache.Eventos.en.tiempo.de.ejecución espacio de nombres
Java: com.alachisoft.ncache.eventos espacio de nombres
Nodo.js: Elemento de caché de evento clase.
Pitón: ncache.eventos.de.almacenamiento.en.caché en tiempo de ejecución clase.