예: 이벤트 데이터 상한가를 사용하여 중복 알림 방지
다음 예에서는 이벤트 기록 테이블을 사용하여 지정된 기간 동안 이벤트 데이터 최대값을 기반으로 중복 알림이 발생하지 않도록 하는 방법을 보여 줍니다. 이 예에서 주식 알림 응용 프로그램은 선택된 주식이 미리 정의된 임계값을 초과할 때 알림을 제공합니다.
시나리오
응용 프로그램은 웹 서비스를 통해 20분마다 새 주식 이벤트를 가져옵니다. 다음 표는 오전 동안의 데이터를 보여 줍니다.
시간 | 주식 기호 | 주가(미화) |
---|---|---|
09:00 GMT |
AWKS |
69.98 |
09:20 GMT |
AWKS |
70.35 |
09:40 GMT |
AWKS |
70.87 |
10:00 GMT |
AWKS |
71.55 |
10:20 GMT |
AWKS |
72.00 |
사용자의 이벤트 기반 구독은 AWKS 주가가 $71.00(미화) 이상에 도달할 때 알림을 배달하기 위한 것입니다. 따라서 10:00 GMT 데이터를 기반으로 알림을 받게 됩니다. 이벤트 일괄 처리가 완료되고 알림이 생성된 후에 이 응용 프로그램에 대해 정의된 이벤트 기록 규칙에 따라 이벤트 기록 테이블에서 당일 최대값인 $71.55가 입력되거나 업데이트됩니다.
구독 규칙
처리를 위해 10:20 GMT 이벤트 데이터가 도착합니다. 구독 규칙에 대해 정의된 알림 생성 작업은 이벤트 기록 테이블을 사용하여 중복 알림을 방지합니다. 이 작업은 새로운 상한가에 도달하지 않는 한, 트리거 가격이 초과될 때 중복 알림을 제외시켜 수행합니다.
-- Generate notifications
SELECT dbo.StockNotificationNotify(S.SubscriberId,
S.SubscriberDeviceName, S.SubscriberLocale,
E.StockSymbol, E.StockPrice)
FROM dbo.StockSubscriptions S
JOIN dbo.StockEvents E
ON S.StockSymbol = E.StockSymbol
JOIN dbo.StockEventChron C
ON S.StockSymbol = C.StockSymbol
WHERE S.StockTriggerPrice <= E.StockPrice
AND S.StockTriggerPrice > C.StockHighPrice
-- Insert new events into event chronicle
INSERT dbo.StockEventChron(StockSymbol, StockHighPrice)
SELECT E.StockSymbol, E.StockPrice
FROM dbo.StockEvents E
WHERE E.StockSymbol
NOT IN (SELECT StockSymbol FROM dbo.StockEventChron)
-- Update existing events in event chronicle
UPDATE dbo.StockEventChron
SET C.StockHighPrice = E.StockPrice
FROM dbo.StockEvents E JOIN dbo.StockEventChron C
ON E.StockSymbol = C.StockSymbol
WHERE E.StockPrice > C.StockHighPrice
중요: |
---|
XML 파일에 응용 프로그램을 정의할 경우 '>'와 같은 예약된 XML 문자를 해당 엔터티 참조로 바꾸어야 합니다. 자세한 내용은 XML Reserved Characters를 참조하십시오. |
결과
트리거 가격 $71.55 이하인 모든 구독은 이미 알림을 받았으며 다른 알림을 받지 않습니다. 트리거 가격이 저장된 상한가인 $71.55보다 크고 새로운 상한가인 $72.00보다 작거나 같은 모든 구독은 알림을 받게 됩니다. 알림이 생성된 후에 이벤트 기록 규칙에 따라 이벤트 기록 테이블이 최신 데이터로 다시 업데이트됩니다.
참고 항목
개념
이벤트 클래스에 대한 기록 정의
이벤트 기록 테이블 정의
구독 규칙 정의
예: 예약 구독에 대한 이벤트 기록 사용
예: 중복 알림 방지를 위한 이벤트 데이터 비교