Envio para uma fila remota de mensagens privadas com a tarefa de script

Aplica-se a: SQL Server SSIS Integration Runtime em Azure Data Factory

A Fila de Mensagens (também conhecida como MSMQ) facilita a comunicação rápida e fiável dos programadores com os programas de aplicação, enviando e recebendo mensagens. Uma fila de mensagens pode estar localizada no computador local ou num computador remoto, podendo ser pública ou privada. Nos Serviços de Integração, o gestor de conexões MSMQ e a tarefa da Fila de Mensagens não suportam enviar para uma fila privada num computador remoto. No entanto, ao usar a tarefa Script, é fácil enviar uma mensagem para uma fila privada remota.

Note

Se quiser criar uma tarefa que possa reutilizar mais facilmente em vários pacotes, considere usar o código deste exemplo de tarefa Script como ponto de partida para uma tarefa personalizada. Para obter mais informações, consulte Desenvolvendo uma tarefa personalizada.

Description

O exemplo seguinte utiliza um gestor de ligações MSMQ existente, juntamente com objetos e métodos do namespace System.Messenger, para enviar o texto contido numa variável de pacote para uma fila de mensagens privadas remota. A chamada para o M:Microsoft. O método SqlServer.Dts.ManagedConnections.MSMQConn.AcquireConnection(System.Object) do gestor de conexões MSMQ devolve um objeto MessageQueue cujo método Send realiza esta tarefa.

Para configurar este exemplo de Tarefa de Script

  1. Crie um gestor de ligações MSMQ com o nome predefinido. Defina o caminho de uma fila privada remota válida, no seguinte formato:

    FORMATNAME:DIRECT=OS:<computername>\private$\<queuename>  
    
  2. Crie uma variável de Serviços de Integração chamada MessageText do tipo String para passar o texto da mensagem para o script. Insira uma mensagem por defeito como valor da variável.

  3. Adiciona uma tarefa de script à superfície de design e edita-a. No separador Script do Editor de Tarefas de Script, adicione a MessageText variável à propriedade ReadOnlyVariables para tornar a variável disponível dentro do script.

  4. Clique em Editar Script para abrir o editor de scripts Microsoft Visual Studio Tools for Applications (VSTA).

  5. Adicione uma referência no projeto de script ao espaço de nomes System.Messenger .

  6. Substitua o conteúdo da janela do script pelo código na secção seguinte.

Code

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