Compartir vía


Enviar a una cola de mensajes privada remota con la tarea Script

Se aplica a: SQL Server SSIS Integration Runtime en Azure Data Factory

Message Queue Server (también conocido como MSMQ) facilita a los desarrolladores la comunicación rápida y confiable con los programas de aplicación mediante el envío y la recepción de mensajes. Una cola de mensajes se puede encontrar en el equipo local o en un equipo remoto y puede ser pública o privada. En Integration Services, el administrador de conexiones MSMQ y la tarea Cola de mensajes no admiten el envío a una cola privada en un equipo remoto. Sin embargo, si se utiliza la tarea Script, resulta sencillo enviar un mensaje a una cola privada remota.

Nota:

Si desea crear una tarea que pueda reutilizar más fácilmente en varios paquetes, considere la posibilidad de utilizar el código de este ejemplo de tarea Script como punto inicial de una tarea personalizada. Para más información, vea Desarrollar una tarea personalizada.

Descripción

En el ejemplo siguiente se utiliza un administrador de conexiones MSMQ existente, junto con objetos y métodos del espacio de nombres System.Messaging, para enviar el texto contenido en una variable de paquete a una cola de mensajes privada remota. La llamada al método M:Microsoft.SqlServer.Dts.ManagedConnections.MSMQConn.AcquireConnection(System.Object) del administrador de conexiones MSMQ devuelve un objeto MessageQueue cuyo método Send lleva a cabo esta tarea.

Para configurar este ejemplo de tarea Script

  1. Cree un administrador de conexiones MSMQ con el nombre predeterminado. Establezca la ruta de acceso de una cola privada remota válida, con el formato siguiente:

    FORMATNAME:DIRECT=OS:<computername>\private$\<queuename>  
    
  2. Cree una variable Integration Services con el nombre MessageText de tipo String para pasar el texto del mensaje al script. Escriba un mensaje predeterminado como valor de la variable.

  3. Agregue una tarea Script a la superficie de diseño y modifíquela. En la pestaña Script del Editor de la tarea Script, agregue la variable MessageText a la propiedad ReadOnlyVariables para que la variable esté disponible dentro del script.

  4. Haga clic en Editar script para abrir el editor de script de Microsoft Visual Studio Tools for Applications (VSTA).

  5. En el proyecto de script, agregue una referencia al espacio de nombres System.Messaging.

  6. Reemplace el contenido de la ventana de script con el código de la sección siguiente.

Código

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

Consulte también

Tarea Cola de mensajes