Skicka till en fjärr-privat meddelandekö med skriptuppgiften

Gäller för:SQL Server SSIS Integration Runtime i Azure Data Factory

Meddelandekö (även känt som MSMQ) gör det enkelt för utvecklare att snabbt och pålitligt kommunicera med applikationsprogram genom att skicka och ta emot meddelanden. En meddelandekö kan vara placerad på den lokala datorn eller en fjärrdator, och kan vara offentlig eller privat. I Integration Services stöder inte MSMQ-anslutningshanteraren och Message Queue-uppgiften att skicka till en privat kö på en fjärrdator. Genom att använda Script-uppgiften är det dock enkelt att skicka ett meddelande till en fjärrprivat kö.

Note

Om du vill skapa en uppgift som du lättare kan återanvända över flera paket, överväg att använda koden i detta Script-uppgiftsexempel som utgångspunkt för en anpassad uppgift. Mer information finns i Utveckla en anpassad uppgift.

Description

Följande exempel använder en befintlig MSMQ-anslutningshanterare, tillsammans med objekt och metoder från System.Messaging-namnrymden, för att skicka texten i en paketvariabel till en avlägsen privat meddelandekö. Kallelsen till M:Microsoft. SqlServer.Dts.ManagedConnections.MSMQConn.AcquireConnection(System.Object)-metoden i MSMQ-anslutningshanteraren returnerar ett MessageQueue-objekt vars Send-metod utför denna uppgift.

För att konfigurera detta exempel på Script Task

  1. Skapa en MSMQ-anslutningshanterare med standardnamnet. Sätt vägen för en giltig fjärrprivat kö, i följande format:

    FORMATNAME:DIRECT=OS:<computername>\private$\<queuename>  
    
  2. Skapa en variabel Integration Services vid namn MessageText av typen String för att skicka meddelandetexten till skriptet. Ange ett standardmeddelande som variabelns värde.

  3. Lägg till en Script Task på designytan och redigera den. På fliken Script i Script Task Editor, lägg till variabeln MessageText i egenskapen ReadOnlyVariables för att göra variabeln tillgänglig i skriptet.

  4. Klicka på Redigera skript för att öppna skriptredigeraren Microsoft Visual Studio Tools for Applications (VSTA).

  5. Lägg till en referens i skriptprojektet till System.Messaging-namnrymden .

  6. Ersätt innehållet i skriptfönstret med koden i följande avsnitt.

Kod

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