Отправка в удаленную закрытую очередь сообщений в задаче «Сценарий»
Служба очередей сообщений (называемая также MSMQ) облегчает разработчикам обеспечение быстрой и надежной связи с прикладными программами при помощи отправки и получения сообщений. Очередь сообщений может находиться в локальном или в удаленном компьютере и может быть открытой или закрытой. В службах Integration Services диспетчер соединений MSMQ и задача «Очередь сообщений» не поддерживают отправку в закрытую очередь на удаленном компьютере. Но при использовании задачи «Сценарий» можно легко отправить сообщение в удаленную закрытую очередь.
![]() |
---|
Если нужно создать задачу, которую будет удобно использовать в нескольких пакетах, рекомендуется начать разработку пользовательской задачи с этого образца задачи «Сценарий». Дополнительные сведения см. в разделе Разработка пользовательской задачи. |
Описание
В следующем примере для отправки текста (содержащегося в переменной пакета) в удаленную закрытую очередь сообщений используется существующий диспетчер соединений MSMQ вместе с объектами и методами из пространства имен System.Messaging. Вызов метода M:Microsoft.SqlServer.Dts.ManagedConnections.MSMQConn.AcquireConnection(System.Object) диспетчера соединений MSMQ возвращает объект MessageQueue, метод Send которого выполняет эту задачу.
Настройка примера задачи «Сценарий»
Создайте диспетчер соединений MSMQ с именем по умолчанию. Установите путь к допустимой удаленной закрытой очереди в следующем формате:
FORMATNAME:DIRECT=OS:<computername>\private$\<queuename>
Создайте переменную служб Integration Services с именем MessageText типа String, чтобы передать текст сообщения в сценарий. Введите сообщение по умолчанию как значение переменной.
Добавьте задачу «Сценарий» в область конструктора и измените ее. На вкладке Сценарий окна Редактор задачи «Сценарий» добавьте переменную MessageText к свойству ReadOnlyVariables, чтобы сделать переменную доступной в сценарии.
Нажмите кнопку Изменить сценарий, чтобы открыть редактор сценариев средств Microsoft Visual Studio для приложений (VSTA).
В проект сценария добавьте ссылку на пространство имен System.Messaging.
Замените содержимое окна сценария кодом из следующего раздела.
Код
Imports System
Imports Microsoft.SqlServer.Dts.Runtime
Imports System.Messaging
Public Class ScriptMain
Public Sub Main()
Dim remotePrivateQueue As MessageQueue
Dim messageText As String
remotePrivateQueue = _
DirectCast(Dts.Connections("Message Queue Connection Manager").AcquireConnection(Dts.Transaction), _
MessageQueue)
messageText = DirectCast(Dts.Variables("MessageText").Value, String)
remotePrivateQueue.Send(messageText)
Dts.TaskResult = ScriptResults.Success
End Sub
End Class
using System;
using Microsoft.SqlServer.Dts.Runtime;
using System.Messaging;
public class ScriptMain
{
public void Main()
{
MessageQueue remotePrivateQueue = new MessageQueue();
string messageText;
remotePrivateQueue = (MessageQueue)(Dts.Connections["Message Queue Connection Manager"].AcquireConnection(Dts.Transaction) as MessageQueue);
messageText = (string)(Dts.Variables["MessageText"].Value);
remotePrivateQueue.Send(messageText);
Dts.TaskResult = (int)ScriptResults.Success;
}
}
|