Envoi vers une file d'attente de messages privée distante à l'aide de la tâche de script
Message Queuing (également appelé MSMQ) permet aux développeurs de communiquer de façon simple, rapide et fiable avec des programmes d'application par l'envoi et la réception de messages. Une file d'attente de messages peut se trouver sur l'ordinateur local ou un ordinateur distant et être publique ou privée. Dans Integration Services, le gestionnaire de connexions MSMQ et la tâche MSMQ ne prennent pas en charge l'envoi vers une file d'attente privée située sur un ordinateur distant. Toutefois, la tâche de script permet d'envoyer facilement un message à une file d'attente privée distante.
[!REMARQUE]
Si vous souhaitez créer une tâche plus facilement réutilisable sur plusieurs packages, servez-vous du code de l'exemple de tâche de script comme point de départ d'une tâche personnalisée. Pour plus d'informations, consultez Développement d'une tâche personnalisée.
Description
L'exemple suivant utilise un gestionnaire de connexions MSMQ existant, avec des objets et des méthodes de l'espace de noms System.Messaging, pour envoyer le texte contenu dans une variable de package à une file d'attente de messages privée distante. L'appel à la méthode M:Microsoft.SqlServer.Dts.ManagedConnections.MSMQConn.AcquireConnection(System.Object) du gestionnaire de connexions MSMQ retourne un objet MessageQueue dont la méthode Send exécute cette tâche.
Pour configurer cet exemple de tâche de script
Créez un gestionnaire de connexions MSMQ avec le nom par défaut. Définissez le chemin d'accès d'une file d'attente privée distante valide, dans le format suivant :
FORMATNAME:DIRECT=OS:<computername>\private$\<queuename>
Créez une variable Integration Services nommée MessageText de type String pour transférer le texte du message dans le script. Entrez un message par défaut en tant que valeur de la variable.
Ajoutez une tâche de script à l'aire de conception et modifiez-la. Sous l'onglet Script de l'éditeur de tâche de script, ajoutez la variable MessageText à la propriété ReadOnlyVariables pour rendre la variable disponible à l'intérieur du script.
Cliquez sur Modifier le script pour ouvrir l'éditeur de script MicrosoftVisual Studio Tools for Applications (VSTA).
Dans le projet de script, ajoutez une référence à l'espace de noms System.Messaging.
Remplacez le contenu de la fenêtre de script par le code dans la section suivante.
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;
}
}
|