Ejemplo: comparar datos de eventos para evitar notificaciones duplicadas

En el siguiente ejemplo se muestra cómo utilizar una tabla de crónica de eventos para evitar notificaciones redundantes basadas en datos de eventos recibidos previamente; a los suscriptores sólo se envían datos únicos. En este ejemplo, una aplicación de actualización de noticias le informa acerca de los titulares nuevos en un determinado sitio Web de noticias.

Escenario

La suscripción controlada por eventos se define para notificarle en cualquier momento que se publica un titular nuevo en el sitio Web de noticias. El sitio Web no proporciona ningún modo para que el proveedor de eventos sepa cuándo cambia el titular, por lo que el proveedor de eventos recopila los contenidos del elemento de titular cada 15 minutos. El dato de la mañana se muestra en la tabla siguiente.

Hora de entrada Titular de noticia

9:00 GMT

Bloqueo político en la capital

9:15 GMT

Bloqueo político en la capital

9:30 GMT

Fuego en las cascadas

El usuario recibe una notificación basada en los datos de las 9:00 GMT, que contiene el titular actual "Bloqueo político en Olympia". Después de procesar el lote de eventos y una vez generada su notificación, una regla de crónica de eventos definida para esta aplicación inserta una fila para el titular actual en la tabla de crónica.

Regla de suscripción

La acción de generación de notificación definida para la regla de suscripción usa la tabla de crónica de eventos para evitar notificaciones duplicadas excluyendo los eventos cuyo valor de titular ya existe en la tabla de crónica de eventos:

SELECT dbo.NewsNotificationNotify(S.SubscriberId,
S.SubscriberDeviceName, S.SubscriberLocale,
E.Headline, E.BrowseBackURL)
FROM dbo.NewsSubscriptions S, dbo.NewsEvents E
WHERE E.Headline 
NOT IN (SELECT Headline from dbo.NewsEventChron )
INSERT dbo.NewsEventChron(Headline)
SELECT NewsEvents.Headline
FROM dbo.NewsEvents
WHERE NewsEvents.Headline
NOT IN (SELECT Headline FROM dbo.NewsEventChron)

Resultados

Basándose en este ejemplo, el proceso de notificación continúa de la forma siguiente:

  1. El primer titular "Bloqueo político en Olympia" no está en la tabla de crónica, por tanto, se le envía como una notificación. Después, la tabla de crónica se actualiza con este titular.
  2. El segundo titular "Bloqueo político en Olympia" es idéntico a un registro existente (el primer titular) en la tabla de crónica. No se le envía y la tabla de crónica no se actualiza.
  3. El tercer titular "Fuego en las cascadas" no está en la tabla de crónica, por tanto, se le envía como una notificación. Después, la tabla de crónica se actualiza con este titular.

Vea también

Conceptos

Definir crónicas para una clase de evento
Definir tablas de crónica de eventos
Definir reglas de suscripción
Ejemplo: Usar una crónica de eventos para suscripciones programadas
Ejemplo: usar valores altos de datos de eventos para impedir notificaciones duplicadas

Ayuda e información

Obtener ayuda sobre SQL Server 2005