예: 예약 구독에 대한 이벤트 기록 사용
업데이트: 2006년 7월 17일
다음 예에서는 예약 구독에 대한 이벤트 데이터를 제공하기 위해 Notification Services 이벤트 클래스로 이벤트 기록을 사용하는 방법을 보여 줍니다. 이 예에서 날씨 업데이트 응용 프로그램은 매일의 지역 날씨 예보를 사용자에게 알립니다.
시나리오
Notification Services 응용 프로그램은 날씨 예보 데이터를 수집하고 구독자에게 날씨 알림을 보냅니다. 각 구독은 날씨 정보를 수집할 도시를 지정하고 알림 메시지 수신에 대한 일정을 지정합니다. 구독의 예약 시간이 되면 응용 프로그램은 구독자에게 해당 도시의 가장 최근의 날씨 예보를 보냅니다.
응용 프로그램에는 모든 주요 도시에 대한 최근 날씨 예보를 저장하는 이벤트 기록이 있습니다. 이 응용 프로그램의 각 이벤트 일괄 처리에는 응용 프로그램이 지원하는 모든 도시에 대한 날씨 예보가 포함되어 있습니다. 날씨 예보 일괄 처리가 도착하면 이벤트 기록 규칙은 이전 예보를 삭제하고 새 예보를 이벤트 기록에 추가합니다.
이벤트 기록 테이블
이벤트 클래스에서 이벤트 기록 테이블을 정의해야 합니다. 이벤트 기록은 이벤트 클래스와 동일한 열(City, Date, Low, High 및 Forecast)을 사용합니다.
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'WeatherEventsChron'
AND TABLE_SCHEMA = 'dbo')
DROP TABLE dbo.WeatherEventsChron;
CREATE TABLE dbo.WeatherEventsChron
(
[City]nvarchar(35),
[Date]datetime,
[Low]float,
[High]float,
[Forecast]nvarchar(3500)
PRIMARY KEY (City)
);
이벤트 기록을 변경한 경우 응용 프로그램을 업데이트하면 Notification Services는 현재 테이블을 삭제하고 새 테이블을 만듭니다. 이 구문에 대한 자세한 내용은 이벤트 기록 테이블 정의를 참조하십시오.
이벤트 기록 규칙
이벤트 클래스에서도 이벤트 일괄 처리가 도착할 때마다 실행되는 이벤트 기록 규칙을 정의합니다. 다음 규칙은 먼저 이벤트 기록에서 모든 데이터를 삭제합니다. 그런 후 이벤트 클래스에 대한 최신 이벤트가 들어 있는 WeatherEvents 뷰에서 최신 이벤트 일괄 처리를 선택하고 이벤트 기록에 이벤트를 추가합니다.
DELETE FROM dbo.WeatherEventsChron;
INSERT INTO dbo.WeatherEventsChron(City, Date, Low, High, Forecast)
SELECT e.City, e.Date, e.Low, e.High, e.Forecast
FROM dbo.WeatherEvents e;
자세한 내용은 이벤트 기록 규칙 정의를 참조하십시오.
알림 생성에 사용되는 예약 규칙
알림 생성에 사용되는 예약 규칙은 이벤트 기록을 이벤트 원본으로 사용합니다. 따라서 예약 구독에는 이벤트 데이터가 포함됩니다.
INSERT INTO dbo.WeatherNotifications(SubscriberId,
DeviceName, SubscriberLocale,
City, Date, Low, High, Forecast)
SELECT s.SubscriberId,
s.DeviceName, s.SubscriberLocale,
c.City, c.Date, c.Low, c.High, c.Forecast
FROM dbo.WeatherSubscriptions s JOIN dbo.WeatherEventsChron c
ON s.City = c.City;
결과
오전 8시에 최신 날짜 정보를 담고 있는 새로운 이벤트 일괄 처리가 도착합니다. 이벤트 기록 규칙이 실행되고 이전 기록 데이터를 새 이벤트 데이터로 바꿉니다.
오전 8시 15분에는 몇 가지 예약 구독이 평가되어야 합니다. 생성자는 예약 규칙을 실행하고 이벤트 기록의 이벤트 데이터를 사용하여 알림을 생성합니다.
참고 항목
개념
이벤트 클래스에 대한 기록 정의
이벤트 기록 테이블 정의
이벤트 기록 규칙 정의
예: 중복 알림 방지를 위한 이벤트 데이터 비교
예: 이벤트 데이터 상한가를 사용하여 중복 알림 방지