|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
10.11. Message Queue TaskЗадача Message Queue Task в SSIS SQL Server 2005, надежная передача данных, служба Message Queue, создание очереди, MSMQ Connection Manager Message Queue Task — это задача, предназначенная для работы с сообщениями в Message Queue Service (служба работы с сообщениями, которая поставляется вместе с Windows 2000 Server и Windows Server 2003). По наблюдениям автора, начинающие разработчики обычно не обращают на эту задачу особого внимания. Зато у опытных разработчиков она относится к числу любимых. Самые распространенные ситуации, когда обычно используется эта задача, представлены далее: q вам необходимо повысить надежность передачи данных при не очень надежных или перегруженных сетевых соединениях. Если сетевое соединение, например, с удаленным филиалом недоступно или перегружено, то при передаче данных обычным способом возникнет ошибка. Если же для этой цели вы используете средства работы с очередями, то передаваемые данные будут помещены в очередь и будут доставлены, как только соединение станет доступным; q для синхронизации работы пакетов SSIS (и просто приложений). Предположим, например, что в течение ночи у вас проводится резервное копирование баз данных, загрузка новых данных, их проверка, процессинг кубов OLAP, в которых используются эти данные, и т. п. При этом время, которое потребуется на выполнение каждой из этих задач, может изменяться. Можно постараться реализовать последовательное выполнение всех этих задач в рамках одного пакета SSIS (или одного задания SQL Server Agent), но это не всегда удобно. Намного удобнее использовать в качестве флага, разрешающего выполнение какой-то операции, сообщение в очереди сообщений Message Queue. Точно так же пакеты или приложения могут обмениваться между собой данными; q для накопления и последующей пакетной обработки данных. Например, данные, поступающие за день из филиалов, копятся в очереди сообщений, чтобы не перегружать загруженный OLTP-сервер. Ночью, когда нагрузка на OLTP-сервер падает, они из очереди передаются на сервер. Такие задачи возникают на многих предприятиях, а решить их без помощи Message Queue Task достаточно сложно. Первое, что нужно сделать при настройке Message Queue Task, — установить службы Message Queue и создать очередь сообщений. Совершенно необязательно устанавливать их на том же компьютере, на котором будет работать пакет SSIS. Наоборот, чаще для всего предприятия используется один компьютер с установленной службой Message Queue. Главные требования — на этом компьютере должна работать серверная версия Windows (2000 или 2003), и этот компьютер должен быть доступен постоянно. Можно, конечно, использовать службы Message Queue и на компьютере, на котором установлен SQL Server 2005 и работают пакеты SSIS, но обычно одного компьютера с установленной службой Message Queue вполне достаточно. Установка служб Message Queue производится обычными средствами Windows. Нужно открыть Панель управления, запустить консоль Установка и удаление программ и воспользоваться кнопкой Установка компонентов Windows. Затем нужно раскрыть контейнер Сервер приложений и установить флажок напротив элемента Очередь сообщений. Двух компонентов этого элемента, который устанавливаются по умолчанию (Общие и Интеграция с Active Directory) в большинстве случаев вполне достаточно. Следующая задача, которую нужно сделать после установки служб Message Queue, — создать очередь, которую вы будете использовать. Для этого нужно открыть консоль Управление компьютером в меню Пуск | Программы | Администрирование и раскрыть в ней контейнер Службы и приложения | Очередь сообщений. Обычно для пакетов SSIS используются частные очереди, поэтому лучше всего создать новую частную очередь из контекстного меню для одноименного контейнера. Называться она будет для целей нашего примера SSIS1 (рис. 10.9).
Рис. 10.9. Создание частной очереди После нажатия на кнопку OK частная очередь готова к использованию в пакете. Следующее, что вам потребуется сделать, — создать в пакете менеджер подключения типа MSMQ Connection Manager. Его главное свойство — Path (Путь), в котором определяется путь и имя очереди. Значение для этого свойства записывается в формате имя_компьютера\Private$\имя_очереди, например LONDON2\Private$\SSIS1. Следующая ваша задача — перетащить из Toolbox на вкладку Control Flow задачу типа Message Queue Task и настроить ее свойства. На вкладке General свойств Message Queue Task можно определить имя и описание задачи, будет ли использоваться формат, совместимый с очередями сообщений в Windows 2000 (по умолчанию используется формат, который совместим с Windows Server 2003), указать менеджер подключения, а также тип задачи с помощью свойства Message (Сообщение) (будет ли эта задача отправлять сообщение в очередь (Send message) или получать сообщение из очереди (Receive Message). В зависимости от выбранного вами значения вторая вкладка свойств задачи будет называться, соответственно, Send (Отправить) или Receive (Получить). На этой второй вкладке вы можете определить параметры отправляемого или принимаемого сообщения. При помощи свойства MessageType (Тип сообщения) определяется тип сообщения. Сообщение может быть текстом, или переменной, или файлом данных. Для флага удобнее использовать строковые значения, а для передачи значений обычно используются файлы данных или переменные. В зависимости от выбранного типа можно определить дополнительные параметры сообщения. После этого осталось включить задачу Message Queue в схему выполнения вашего пакета. Например, если пакет перед выполнением какой-то операции должен получить сигнал (или данные) от другого пакета, задачу Message Queue на получение сообщения можно поставить перед элементом, который выполняет требуемую операцию и настроить логику выполнения пакета при помощи ограничений предшественников (precedence constraints) (стрелок, связывающих задачи на вкладке Control Flow).
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
Получить учебные материалы по этому курсу |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||