Beispiel: Vergleichen von Ereignisdaten zum Vermeiden doppelter Benachrichtigungen
Im folgenden Beispiel wird gezeigt, wie eine Ereignisverlaufstabelle verwendet wird, um redundante Benachrichtigungen zu vermeiden, die auf zuvor empfangenen Ereignisdaten basieren. Nur neue, eindeutige Daten werden an Abonnenten gesendet. In diesem Beispiel werden Sie von einer Newsaktualisierungsanwendung benachrichtigt, dass neue Überschriften auf einer bestimmten News-Website verfügbar sind.
Szenario
Ihr ereignisgesteuertes Abonnement ist so definiert, dass Sie benachrichtigt werden, sobald eine neue Überschrift auf der News-Website zur Verfügung gestellt wird. Die Website bietet für den Ereignisanbieter keine Möglichkeit zur Überprüfung, wann die Überschrift geändert wird. Daher sammelt der Ereignisanbieter alle 15 Minuten die Inhalte des Überschriftenelements. In der folgenden Tabelle sind die Daten für den Morgen dargestellt.
Time in | News headline |
---|---|
09:00 GMT |
Political Gridlock in Capital City |
09:15 GMT |
Political Gridlock in Capital City |
09:30 GMT |
Wildfire in the Cascades |
Sie empfangen eine Benachrichtigung, die auf den 09:00 GMT-Daten basiert und die aktuelle Überschrift "Political Gridlock in Capital City" erhält. Nachdem der Ereignisbatch verarbeitet und die Benachrichtigung generiert wurde, wird von einer Ereignisverlaufsregel, die für diese Anwendung definiert ist, eine Zeile für diese aktuelle Überschrift in die Ereignisverlaufstabelle eingefügt.
Abonnementregel
Von der Benachrichtigungsgenerierungsaktion, die für die Abonnementregel definiert ist, wird die Ereignisverlaufstabelle zur Vermeidung doppelter Benachrichtigungen verwendet, indem Ereignisse, deren Überschriftenwert bereits in der Ereignisverlaufstabelle vorhanden ist, ausgeschlossen werden:
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)
Ergebnisse
Basierend auf diesem Beispiel verläuft der Benachrichtigungsprozess wie folgt:
- Die erste Überschrift "Political Gridlock in Capital City" befindet sich nicht in der Verlaufstabelle und wird als Benachrichtigung an Sie gesendet. Die Verlaufstabelle wird dann mit dieser Überschrift aktualisiert.
- Die zweite Überschrift "Political Gridlock in Capital City" ist mit einem vorhandenen Datensatz (von der ersten Überschrift) in der Verlaufstabelle identisch. Sie wird Ihnen nicht zugesendet, und die Verlaufstabelle wird nicht aktualisiert.
- Die dritte Überschrift "Wildfire in the Cascades" befindet sich nicht in der Verlaufstabelle und wird als Benachrichtigung an Sie gesendet. Die Verlaufstabelle wird dann mit dieser Überschrift aktualisiert.
Siehe auch
Konzepte
Definieren von Verläufen für eine Ereignisklasse
Definieren von Ereignisverlaufstabellen
Definieren von Abonnementregeln
Beispiel: Verwenden eines Ereignisverlaufs für geplante Abonnements
Beispiel: Verwenden von Höchstwerten für Ereignisdaten zum Vermeiden doppelter Benachrichtigungen