Verzenden naar een externe privéberichtwachtrij met de scripttaak

Van toepassing op:SQL Server SSIS Integration Runtime in Azure Data Factory

Message Queuing (ook bekend als MSMQ) maakt het voor ontwikkelaars gemakkelijk om snel en betrouwbaar met applicatieprogramma's te communiceren door berichten te verzenden en ontvangen. Een berichtenwachtrij kan zich bevinden op de lokale computer of een externe computer, en kan openbaar of privé zijn. In Integration Services ondersteunen de MSMQ-verbindingsmanager en de Message Queue-taak geen verzending naar een privéwachtrij op een externe computer. Door de Script-taak te gebruiken, is het echter eenvoudig om een bericht naar een externe privéwachtrij te sturen.

Note

Als je een taak wilt maken die je gemakkelijker kunt hergebruiken in meerdere pakketten, overweeg dan de code in dit scriptvoorbeeld als uitgangspunt voor een aangepaste taak. Zie Een aangepaste taak ontwikkelenvoor meer informatie.

Description

Het volgende voorbeeld gebruikt een bestaande MSMQ-verbindingsbeheerder, samen met objecten en methoden uit de System.Messaging-naamruimte, om de tekst in een pakketvariabele naar een externe privéberichtwachtrij te sturen. De oproep aan de M:Microsoft. SqlServer.Dts.ManagedConnections.MSMQConn.AcquireConnection(System.Object)-methode van de MSMQ-verbindingsmanager levert een MessageQueue-object waarvan de Verzendmethode deze taak uitvoert.

Om dit voorbeeld van een scripttaak te configureren,

  1. Maak een MSMQ-verbindingsmanager aan met de standaardnaam. Stel het pad in van een geldige externe privéwachtrij, in het volgende formaat:

    FORMATNAME:DIRECT=OS:<computername>\private$\<queuename>  
    
  2. Maak een Integration Services-variabele genaamd MessageText van het type String aan om de berichttekst aan het script door te geven. Voer een standaardbericht in als waarde van de variabele.

  3. Voeg een Scripttaak toe aan het ontwerpoppervlak en bewerk die. Voeg op het tabblad Script van de Script Taakeditor de variabele MessageText toe aan de eigenschap ReadOnlyVariables om de variabele beschikbaar te maken binnen het script.

  4. Klik op Script bewerken om de scripteditor Microsoft Visual Studio Tools for Applications (VSTA) te openen.

  5. Voeg een referentie toe in het scriptproject aan de System.Messaging-naamruimte .

  6. Vervang de inhoud van het scriptvenster door de code in de volgende sectie.

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