範例:比較事件資料以避免重複的通知
下列範例會顯示如何利用事件紀事輯資料表,根據先前收到的事件資料來避免重複的通知;只將新而唯一的資料會傳給訂閱者。在這個範例中,新聞更新應用程式會通知您特定新聞網站新的新聞標題。
案例
您的事件驅動訂閱定義成每當有新的新聞標題公佈到新聞網站時,都會向您發出通知。網站並未提供任何方法,供事件提供者得知新聞標題的變更,因此,事件提供者會每隔 15 分鐘收集一次新聞標題元素的內容。下表顯示早上的資料。
時間 | 新聞標題 |
---|---|
09:00 GMT |
Political Gridlock in Capital City |
09:15 GMT |
Political Gridlock in Capital City |
09:30 GMT |
Wildfire in the Cascades |
您會收到以 09:00 GMT 資料為基礎的通知,包含的目前新聞標題是 "Political Gridlock in Olympia"。處理好事件批次及產生通知之後,定義給這個應用程式的事件紀事輯規則會在事件紀事輯資料表中插入目前新聞標題的資料列。
訂閱規則
定義給訂閱規則的通知產生動作會利用事件紀事輯資料表來防止重複的通知,它會排除新聞標題已在事件紀事輯資料表中的任何事件:
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)
結果
以這個範例為基礎,通知程序的運作方式如下:
- 第一個新聞標題 "Political Gridlock in Olympia" 不在紀事輯資料表中,它會作為一項通知而傳給您。之後,會利用這個新聞標題來更新紀事輯資料表。
- 第二個新聞標題 "Political Gridlock in Olympia" 與紀事輯資料表中的現有記錄相同 (第一個新聞標題)。它不會傳給妳,紀事輯資料表也不會更新。
- 第三個新聞標題 "Wildfire in the Cascades" 不在紀事輯資料表中,它會作為一項通知而傳給您。之後,會利用這個新聞標題來更新紀事輯資料表。
請參閱
概念
定義事件類別的紀事輯
定義事件紀事輯資料表
定義訂閱規則
範例:為排程訂閱使用事件紀事輯
範例:使用事件資料高度值以避免重複的通知