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


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

Область применения: среда выполнения интеграции SSIS SQL Server в Фабрика данных Azure

Задача "Очередь сообщений" позволяет использовать очередь сообщений (также называемую 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).

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

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

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

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

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

Редактор задачи «Очередь сообщений» (страница «Общие»)

Страница «Общие» диалогового окна Редактор задачи «Очередь сообщений» позволяет задавать имя и описывать задачу «Очередь сообщений», определять формат сообщений, а также указывать, будет ли задача отправлять или получать сообщения.

Параметры

Имя
Задайте уникальное имя задаче «Очередь сообщений». Это имя используется в качестве метки для значка задачи.

Примечание.

Имена задач в пределах пакета должны быть уникальными.

Description
Введите описание задачи «Очередь сообщений».

Use2000Format
Укажите, нужно ли использовать формат 2000 службы очередей сообщений (MSMQ). По умолчанию False.

MSMQConnection
Выберите существующий диспетчер подключений MSMQ или щелкните <Создать соединение...>, чтобы создать диспетчер.

См. также: Диспетчер FTP-соединений, Редактор диспетчера FTP-соединений

Сообщение
Указывает, будет ли задача «Очередь сообщений» отправлять или получать сообщения. При выборе режима Отправить сообщениена левой панели диалогового окна появляется страница «Отправка», при выборе режима Получить сообщениепоявляется страница «Получение». По умолчанию, устанавливается режим Отправить сообщение.

Редактор задачи «Очередь сообщений» (страница «Отправка»)

Используйте страницу "Отправить" диалогового окна редактора задач очереди сообщений, чтобы настроить задачу очереди сообщений для отправки сообщений из пакета Служб Microsoft SQL Server Integration Services.

Параметры

UseEncryption
Укажите, необходимо ли шифровать сообщение. По умолчанию False.

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

Примечание.

Алгоритм RC4 поддерживается только в целях обратной совместимости. Когда база данных имеет уровень совместимости 90 или 100, новые материалы могут шифроваться только с помощью алгоритмов RC4 или RC4_128. (Не рекомендуется.) Используйте вместо этого более новые алгоритмы, например AES. В текущем выпуске SQL Server материалы, зашифрованные с помощью RC4 или RC4_128, можно расшифровать на любом уровне совместимости.

Внимание

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

MessageType
Выбор типа сообщения. Это свойство имеет параметры, указанные в следующей таблице.

значение Описание
Сообщение файла данных Сообщение хранится в файле. При выборе этого значения отображается динамический параметр DataFileMessage.
Сообщение переменной Сообщение хранится в переменной. При выборе этого значения отображается динамический параметр VariableMessage.
Строковое сообщение Сообщение сохраняется в задаче «Очередь сообщений». При выборе этого значения отображается динамический параметр StringMessage.

Динамические параметры MessageType

MessageType = Сообщение файла данных

DataFileMessage
Введите путь к файлу данных или нажмите кнопку с многоточием (…), а затем найдите файл.

MessageType = Сообщение с переменными

VariableMessage
Введите имена переменных или нажмите кнопку с многоточием (…), а затем выберите переменные. Переменные разделяются запятыми.

См. также: Выбор переменных

MessageType = Строковое сообщение

StringMessage
Введите строковое сообщение или нажмите кнопку с многоточием (…), а затем введите сообщение в диалоговом окне Введите строковое сообщение.

Редактор задачи «Очередь сообщений» (страница «Получение»)

Используйте страницу получения диалогового окна редактора задач очереди сообщений, чтобы настроить задачу очереди сообщений для получения сообщений Microsoft Message Queuing (MSMQ).

Параметры

RemoveFromMessageQueue
Указывает, следует ли удалять сообщение из очереди после того, как оно было получено. По умолчанию, этому параметру присваивается значение False.

ErrorIfMessageTimeOut
Указывает, следует ли считать выполнение задачи завершенным неудачно по истечении лимита времени и отображать сообщение об ошибке. По умолчанию False.

TimeoutAfter
Если будет выбрано отображение сообщения об ошибке в случае неудачного завершения задачи, то следует указать количество секунд для ожидания перед отображением сообщения об истечении лимита времени.

MessageType
Выбор типа сообщения. Это свойство имеет параметры, указанные в следующей таблице.

значение Описание
Сообщение файла данных Сообщение хранится в файле. При выборе этого значения отображается динамический параметр DataFileMessage.
Сообщение переменной Сообщение хранится в переменной. При выборе этого значения отображается динамический параметр VariableMessage.
Строковое сообщение Сообщение сохраняется в задаче «Очередь сообщений». При выборе этого значения отображается динамический параметр StringMessage.
Строковое сообщение в переменную Сообщение

При выборе этого значения отображается динамический параметр StringMessage.

Динамические параметры MessageType

MessageType = Сообщение файла данных

SaveFileAs
Введите путь к используемому файлу или нажмите кнопку с многоточием (…), а затем найдите файл.

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

Фильтр
Укажите, следует ли применять фильтр к сообщениям. Это свойство имеет параметры, указанные в следующей таблице.

значение Описание
Нет фильтра Эта задача не фильтрует сообщения. Выбор этого значения отображает динамический параметр IdentifierReadOnly.
Из пакета Сообщение получает только сообщения из указанного пакета. Выбор этого значения отображает динамический параметр Идентификатор.

Динамические параметры фильтра

Filter = Не фильтровать

IdentifierReadOnly
Этот параметр доступен только для чтения. Он может быть пустым или содержать идентификатор GUID пакета в случае, если свойство «Фильтр» было установлено ранее.

Filter = Из пакета

Идентификатор
Если выбрано применение фильтра, следует ввести уникальный идентификатор пакета, из которого могут быть получены сообщения, или нажать кнопку с многоточием (…) и указать пакет.

Связанные разделы: выбор пакета

MessageType = Сообщение с переменными

Фильтр
Укажите, следует ли применять фильтр к сообщениям. Это свойство имеет параметры, указанные в следующей таблице.

значение Описание
Нет фильтра Эта задача не фильтрует сообщения. Выбор этого значения отображает динамический параметр IdentifierReadOnly.
Из пакета Сообщение получает только сообщения из указанного пакета. Выбор этого значения отображает динамический параметр Идентификатор.

Переменная
Введите имя переменной либо выберите <Создать переменную…> и затем настройте новую переменную.

Связанные разделы: добавление переменной

Динамические параметры фильтра

Filter = Не фильтровать

IdentifierReadOnly
Этот параметр пуст.

Filter = Из пакета

Идентификатор
Если выбрано применение фильтра, следует ввести уникальный идентификатор пакета, из которого могут быть получены сообщения, или нажать кнопку с многоточием (…) и указать пакет.

Связанные разделы: выбор пакета

MessageType = Строковое сообщение

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

значение Описание
Не допускается Сообщения не сравниваются.
Точное совпадение Сообщения должны точно совпадать со строкой, указанной в параметре CompareString .
Игнорировать регистр Сообщение должно совпадать со строкой, указанной в параметре CompareString , но регистр при этом не имеет значения.
Содержит Сообщения должны содержать строку, указанную в параметре CompareString .

CompareString
Если в качестве значения параметра Сравнить установлено Нет, укажите строку, с которой должно сравниваться сообщение.

MessageType = String message to variable

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

значение Описание
Не допускается Сообщения не сравниваются.
Точное совпадение Сообщения должны точно совпадать со строкой, указанной в параметре CompareString .
Игнорировать регистр Сообщение должно совпадать со строкой, указанной в параметре CompareString , но регистр при этом не имеет значения.
Содержит Сообщение должно содержать строку, указанную в параметре CompareString .

CompareString
Если в качестве значения параметра Сравнить установлено Нет, укажите строку, с которой должно сравниваться сообщение.

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

Связанные разделы: добавление переменной

Выбор переменных

Используйте диалоговое окно Выбор переменных для указания переменных, которые следует использовать при выполнении операции отправки сообщения в задаче «Очередь сообщений». Список Доступные переменные включает системные и пользовательские переменные, находящиеся в области действия задачи "Очередь сообщений" или ее родительского контейнера. Задача использует переменные, перечисленные в списке Выбранные переменные .

Параметры

Доступные переменные
Выберите одну или несколько переменных.

Выбранные переменные
Выберите одну или несколько переменных.

Стрелки вправо
Переместить выбранные переменные в список Выбранные переменные .

Стрелки влево
Переместить выбранные переменные обратно в список Доступные переменные .

Создать переменную
Создать новую переменную.

Связанные разделы: добавление переменной

См. также

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