Задание сводной доставки или многоадресной доставки
Службы Notification Services предоставляют два параметра для статистической обработки уведомлений: сводная доставка и многоадресная доставка. При сводной доставке сообщения для одного подписчика комбинируются в одно сообщение. При многоадресной доставке экономятся ресурсы модуля форматирования данных путем распознавания того, что одно и то же уведомление будет отправлено нескольким подписчикам, путем однократного форматирования уведомления, а затем его отправки.
Важно! |
---|
Можно использовать либо сводную доставку, либо многоадресную доставку, но не обе. |
В этом разделе описывается сводная доставка и многоадресная доставка, а также настройка этих параметров.
Сводная доставка
Некоторые приложения могут формировать несколько уведомлений для одного подписчика в одном пакете уведомлений. Для снижения количества сообщений, отправляемых отдельным подписчикам, можно включить сводную доставку, комбинирующую похожие уведомления в одно сводное сообщение.
При включении сводной доставки для класса уведомлений все уведомления в одном пакете уведомлений анализируются на наличие сводной доставки. Для всех уведомлений в пакете, имеющих одинаковый идентификатор подписчика, языковой стандарт, устройство и данные в любых полях, включенных при сводной доставке, службы Notification Services комбинируют отдельные уведомления в сводное уведомление, а затем отправляют все данные модулю форматирования данных, который возвращает единственный результат форматирования.
Первое уведомление в наборе, формирующем сводное уведомление, называется головным уведомлением сводки, а остальные уведомления называются дополнительными уведомлениями сводки. Тело сообщения состоит из статистических данных всех уведомлений.
В следующей таблице представлена упрощенная таблица уведомлений для класса уведомлений. В этом классе уведомлений в поле State свойство группирования сводки установлено равным true, поэтому его поля используются для определения группирования сводки. Строки, выделенные полужирным шрифтом, представляют уведомления, которые будут скомбинированы в сводное сообщение.
NotificationId | SubscriberId | DeviceName | SubscriberLocale | City | State |
---|---|---|---|---|---|
1 |
Виктор |
электронная почта |
ru-RU |
Самара |
Самарская область |
2 |
Алексей |
электронная почта |
ru-RU |
Самара |
Самарская область |
3 |
Виктор |
электронная почта |
ru-RU |
Жигулевск |
Самарская область |
4 |
Виктор |
электронная почта |
ru-RU |
Челябинск |
Челябинская область |
5 |
Виктор |
файл |
ru-RU |
Чапаевск |
Самарская область |
В данном примере значения в столбцах SubscriberId, DeviceName, SubscriberLocale и State должны быть одинаковыми, чтобы Notification Services скомбинировали уведомления в сводку. Для уведомлений 1 и 3 выполняются критерии совпадения, и они будут скомбинированы в сводку. Уведомление 2 предназначено другому подписчику, уведомление 4 предназначено для другой области, а уведомление 5 предназначено для другого устройства, поэтому эти уведомления не будут скомбинированы на основании данных из этой таблицы.
Включение сводной доставки
При определении приложения посредством XML включите сводную доставку в элементе NotificationClass файла определения приложения (ADF). При определении приложения программным путем используйте управляющие объекты служб Notification Services для включения сводной доставки.
Многоадресная доставка
Примечание. |
---|
Многоадресная доставка не поддерживается в выпуске SQL Server 2005 Standard Edition. |
Если существует большая вероятность, что приложение будет создавать одинаковые данные уведомлений для нескольких подписчиков, то включается многоадресная доставка, чтобы модуль форматирования данных осуществлял форматирование уведомления только один раз, а затем отправлял это уведомление списку подписчиков.
Для классов уведомлений, для которых включена многоадресная доставка, распространитель выполняет следующие действия для форматирования многоадресных уведомлений:
- Распространитель сортирует строки таблицы по значениям полей устройства, языкового стандарта и уведомления.
- Распространитель начинает считывание строк. Пока значения в соответствующих столбцах остаются одинаковыми, распространитель добавляет данные о подписчике в многоадресный список. Количество подписчиков для каждого многоадресного сообщения можно ограничить. Дополнительные сведения см. в разделе Задание имени и полей протокола доставки.
- Как только распространитель встречает строку с другими значениями в соответствующих столбцах, он передает предыдущий набор значений столбцов модулю форматирования данных и передает результат форматирования вместе со списком подписчиков в протокол доставки.
В следующей таблице показаны те же данные уведомлений, которые использовались для демонстрации сводной доставки. В этот раз поля устройства, языкового стандарта и все поля уведомления используются для определения уведомлений для многоадресной трансляции.
NotificationId | SubscriberId | DeviceName | SubscriberLocale | City | State |
---|---|---|---|---|---|
1 |
Виктор |
электронная почта |
ru-RU |
Самара |
Самарская область |
2 |
Алексей |
электронная почта |
ru-RU |
Самара |
Самарская область |
3 |
Виктор |
электронная почта |
ru-RU |
Жигулевск |
Самарская область |
4 |
Виктор |
электронная почта |
ru-RU |
Челябинск |
Челябинская область |
5 |
Виктор |
файл |
ru-RU |
Чапаевск |
Самарская область |
Уведомления 1 и 2 содержат идентичные данные City и State, но предназначены для различных подписчиков. При включении многоадресной доставки Notification Services форматируют уведомление 1, а затем отправляют отформатированное сообщение со списком получателей (Виктор и Алексей) протоколу доставки. Однако поскольку уведомления 3, 4 и 5 содержат уникальные данные City и State, то для них не осуществляется многоадресная трансляция.
Вопросы применения многоадресной доставки
Многоадресная доставка является прозрачной для подписчиков. Фактический сетевой протокол, используемый для отправки сообщений уведомлений, не обязательно должен поддерживать многоадресную трансляцию.
При включении многоадресной доставки протокол доставки получает отформатированное сообщение однократно вместе со списков подписчиков. Протокол доставки должен быть способен использовать список получателей для отправки отформатированного сообщения нескольким подписчикам. Он может делать это либо путем отправки одного сообщения, если сетевой протокол поддерживает истинную многоадресную доставку, или путем простого просмотра списка подписчиков и отправки одного и того же сообщения каждому подписчику.
Стандартные протоколы доставки поддерживают многоадресную доставку. При использовании протоколов доставки, разработанных сторонним производителем, обратитесь к разработчику, чтобы определить, поддерживает ли протокол доставки многоадресную трансляцию.
Также для правильной работы многоадресной доставки многоадресные сообщения не должны содержать никаких данных, относящихся к конкретным подписчикам, поскольку один и тот же результат форматирования отправляется нескольким подписчикам. Распространитель не передает никаких данных о получателях модулю форматирования данных. Если модуль форматирования данных запрограммирован на использование данных о получателях при форматировании, то произойдет его сбой.
Службы Notification Services, однако, не исключают вставку данных, относящихся к конкретным подписчикам, из внешних источников данных в данные уведомлений в процессе форматирования. Убедитесь в том, что никакие внешние данные, которые модуль форматирования данных добавляет к данным уведомлений, не относятся к конкретным подписчикам.
Включение многоадресной доставки
При определении приложения посредством XML включите многоадресную доставку в элементе NotificationClass файла определения приложения (ADF). При определении приложения программным путем используйте NMO для включения многоадресной доставки.
См. также
Основные понятия
Разработка пользовательского модуля форматирования данных
Разработка пользовательского протокола доставки
Определение схемы уведомления
Настройка модулей форматирования данных
Определение размера пакета уведомлений
Задание срока действия уведомлений
Задание имени и полей протокола доставки
Другие ресурсы
Определение классов уведомлений
Настройка протоколов доставки
Определение классов уведомлений
Определение приложений служб Notification Services