Поделиться через


Задача «Очередь сообщений»

Задача "Очередь сообщений" позволяет использовать очередь сообщений (также называемую MSMQ) для отправки и получения сообщений между пакетами служб SQL Server Integration Services или отправки сообщений в очередь приложений, обрабатываемую пользовательским приложением. Эти сообщения могут принимать форму простого текста, файлов или переменных и их значений.

С помощью задачи "Очередь сообщений" можно координировать операции по всей организации. Сообщения можно помещать в очередь и доставлять позже, если место назначения недоступно или занято; например, задача может ставить сообщения в очередь для офлайн-ноутбука представителей отдела продаж, которые получают свои сообщения при подключении к сети. Задачу очереди сообщений можно использовать для следующих целей:

  • Отложить выполнение задачи до тех пор, пока другие пакеты не зарегистрируются. Например, после ночного обслуживания в каждой из ваших розничных точек, задача очереди сообщений отправляет сообщение на корпоративный компьютер. Пакет, работающий на корпоративном компьютере, содержит задачи очереди сообщений, каждый из которых ожидает сообщения с определенного розничного сайта. При поступлении сообщения с сайта задача отправляет данные с этого сайта. После того как все сайты отметились, пакет вычисляет сводные итоги.

  • Отправка файлов данных на компьютер, который обрабатывает их. Например, данные из кассового аппарата ресторана можно отправить в файл данных в корпоративную систему оплаты труда, где извлекается информация о чаевых каждого официанта.

  • Распространение файлов по всей организации. Например, пакет может использовать задачу очереди сообщений для отправки файла пакета другому компьютеру. Пакет, работающий на конечном компьютере, затем использует задачу очереди сообщений для извлечения и сохранения пакета локально.

При отправке или получении сообщений задача очереди сообщений использует один из четырех типов сообщений: файл данных, строку, строковое сообщение в переменную или переменную. Строковое сообщение типа сообщения переменной можно использовать только при получении сообщений.

Задача использует диспетчер соединений MSMQ для подключения к очереди сообщений. Для получения дополнительной информации см. Менеджер подключений MSMQ. Дополнительные сведения о очереди сообщений см. в библиотеке MSDN.

Задача очереди сообщений требует установки службы Служб Integration Services. Некоторые компоненты SQL Server, которые можно выбрать на странице Компоненты для установки или на странице Выбор функций мастера установки SQL Server, устанавливают неполный набор компонентов служб Integration Services. Эти компоненты полезны для конкретных задач, но функциональные возможности служб Integration Services будут ограничены. Например, параметр SQL Server Data Tools (SSDT) устанавливает компоненты Служб Integration Services, необходимые для разработки пакета, но служба Integration Services не установлена, и поэтому задача очереди сообщений не работает. Чтобы обеспечить полную установку служб Integration Services, необходимо выбрать службы Integration Services на странице "Компоненты" для установки . Дополнительные сведения об установке и выполнении задачи очереди сообщений см. в разделе "Установка служб Integration Services".

Замечание

Задача очереди сообщений не соответствует стандарту федеральной обработки информации FIPS 140-2, если операционная система компьютера настроена в режиме FIPS и задача использует шифрование. Если задача очереди сообщений не использует шифрование, задача может выполняться успешно.

Типы сообщений

Типы сообщений, которые предоставляет задача "Очередь сообщений", можно настроить следующим образом:

  • Data file сообщение указывает, что файл содержит сообщение. При получении сообщений можно настроить задачу для сохранения файла, перезаписать существующий файл и указать пакет, из которого задача может получать сообщения.

  • String сообщение задается как строка. При получении сообщений можно настроить задачу для сравнения полученной строки с определяемой пользователем строкой и выполнить действия в зависимости от сравнения. Сравнение строк может быть точным, может учитывать регистр или не учитывать регистр, или использовать подстроку.

  • String message to variable указывает исходное сообщение в виде строки, отправляемой в целевую переменную. Вы можете настроить задачу для сравнения полученной строки с определяемой пользователем строкой, используя точное сравнение, сравнение без учета регистра или сравнение подстроки. Этот тип сообщения доступен только в том случае, если задача получает сообщения.

  • Variable указывает, что сообщение содержит одну или несколько переменных. Вы можете настроить задачу, чтобы указать имена переменных, включенных в сообщение. При получении сообщений можно настроить задачу, чтобы указать как пакет, из которого он может получать сообщения, так и переменную, которая является назначением сообщения.

Отправка сообщений

При настройке задачи очереди сообщений для отправки сообщений можно использовать один из алгоритмов шифрования, которые в настоящее время поддерживаются технологией очереди сообщений, RC2 и RC4, для шифрования сообщения. Оба этих алгоритма шифрования теперь считаются криптографически слабыми по сравнению с более новыми алгоритмами, которые технология очереди сообщений пока не поддерживает. Поэтому при отправке сообщений с помощью задачи очереди сообщений следует тщательно учитывать необходимость шифрования.

Получение сообщений

При получении сообщений задача очереди сообщений может быть настроена следующим образом:

  • Обход сообщения или удаление сообщения из очереди.

  • Указание времени ожидания.

  • Ошибка при тайм-ауте.

  • Перезаписывание существующего файла, если сообщение хранится в объекте Data file.

  • Сохранение файла сообщения под другим именем файла, если сообщение использует тип Data file message.

Пользовательские сообщения ведения журнала, доступные в задании очереди сообщений

В следующей таблице перечислены пользовательские записи журнала для задачи "Очередь сообщений". Дополнительные сведения см. в разделе логирование служб Integration Services (SSIS) и настраиваемые сообщения для логирования.

Запись журнала Описание
MSMQAfterOpen Указывает, что задача завершила открытие очереди сообщений.
MSMQBeforeOpen Указывает, что задача начала открывать очередь сообщений.
MSMQBeginReceive Указывает, что задача начала получать сообщение.
MSMQBeginSend Указывает, что задача начала отправлять сообщение.
MSMQEndReceive Указывает, что задача завершила получение сообщения.
MSMQEndSend Указывает, что задача завершила отправку сообщения.
MSMQTaskInfo Выводит описательные сведения об этой задаче.
MSMQTaskTimeOut Указывает, что задача была прервана по истечении времени ожидания.

Настройка задачи очереди сообщений

Свойства могут быть заданы с помощью конструктора SSIS или программным путем. Чтобы узнать о свойствах, которые можно задать в конструкторе служб SSIS, щелкните один из следующих разделов:

Сведения о программном задании этих свойств см. в документации по классу Microsoft.SqlServer.Dts.Tasks.MessageQueueTask.MessageQueueTask в руководстве разработчика.

Дополнительные сведения о настройке этих свойств в конструкторе служб SSIS см. в разделе "Задание свойств задачи или контейнера".

См. также

Задачи служб Integration Services
Поток управления