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
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>
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.
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.Haga clic en Editar script para abrir el editor de script de Microsoft Visual Studio Tools for Applications (VSTA).
En el proyecto de script, agregue una referencia al espacio de nombres System.Messaging.
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;
}
}