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


Отправка в удаленную закрытую очередь сообщений в задаче «Скрипт»

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

Служба очередей сообщений (называемая также MSMQ) облегчает разработчикам обеспечение быстрой и надежной связи с прикладными программами при помощи отправки и получения сообщений. Очередь сообщений может находиться в локальном или в удаленном компьютере и может быть открытой или закрытой. В службах Integration Services диспетчер соединений MSMQ и задача очереди сообщений не поддерживают отправку в частную очередь на удаленном компьютере. Но при использовании задачи «Скрипт» можно легко отправить сообщение в удаленную закрытую очередь.

Примечание.

Если нужно создать задачу, которую будет удобно использовать в нескольких пакетах, рекомендуется начать разработку пользовательской задачи с этого образца задачи «Скрипт». Дополнительные сведения см. в разделе Разработка пользовательской задачи.

Description

В следующем примере для отправки текста (содержащегося в переменной пакета) в удаленную закрытую очередь сообщений используется существующий диспетчер соединений MSMQ вместе с объектами и методами из пространства имен System.Messaging. Вызов метода M:Microsoft.SqlServer.Dts.ManagedConnections.MSMQConn.AcquireConnection(System.Object) диспетчера подключений MSMQ возвращает объект MessageQueue, метод Send которого выполняет эту задачу.

Настройка этого образца задачи «Скрипт»

  1. Создайте диспетчер соединений MSMQ с именем по умолчанию. Установите путь к допустимой удаленной закрытой очереди в следующем формате:

    FORMATNAME:DIRECT=OS:<computername>\private$\<queuename>  
    
  2. Создайте переменную Служб Integration Services с именем MessageText типа String , чтобы передать текст сообщения в скрипт. Введите сообщение по умолчанию как значение переменной.

  3. Добавьте задачу «Скрипт» в область конструктора и измените ее. На вкладке Скриптредактора задачи "Скрипт" добавьте переменную MessageText к свойству ReadOnlyVariables, чтобы сделать переменную доступной в скрипте.

  4. Нажмите кнопку "Изменить скрипт", чтобы открыть редактор скриптов набор средств Microsoft Visual Studio Tools для работы с приложениями (VSTA).

  5. В проект скрипта добавьте ссылку на пространство имен System.Messaging.

  6. Замените содержимое окна скрипта кодом из следующего раздела.

Код

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;  
  
        }  
  
}  

См. также

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