次の方法で共有


スクリプト タスクによるリモート プライベート メッセージ キューへの送信

適用対象:SQL Server Azure Data Factory の SSIS Integration Runtime

メッセージ キュー (MSMQ) では、開発者がメッセージを送受信することにより、アプリケーション プログラムとすばやく確実に通信できます。 メッセージ キューは、ローカル コンピューターまたはリモート コンピューターに存在し、パブリックであることも、プライベートであることもあります。 Integration Services の MSMQ 接続マネージャーとメッセージ キュー タスクでは、リモート コンピューター上のプライベート キューへの送信はサポートされません。 ただし、スクリプト タスクを使用することにより、リモート プライベート キューにメッセージを簡単に送信できます。

Note

複数のパッケージでより簡単に再利用できるタスクを作成する場合は、このスクリプト タスク サンプルのコードを基にした、カスタム タスクの作成を検討してください。 詳細については、「 カスタム タスクの開発」を参照してください。

説明

次の例では、既存の MSMQ 接続マネージャーを System.Messaging 名前空間のオブジェクトおよびメソッドと共に使用して、パッケージ変数に含まれているテキストをリモート プライベート メッセージ キューに送信します。 MSMQ 接続マネージャーの M:Microsoft.SqlServer.Dts.ManagedConnections.MSMQConn.AcquireConnection(System.Object) メソッドの呼び出しにより、その Send メソッドがこのタスクを実行する MessageQueue が返されます。

このスクリプト タスクの例を構成するには

  1. 既定の名前を使用して MSMQ 接続マネージャーを作成します。 有効なリモート プライベート キューのパスを次の形式で設定します。

    FORMATNAME:DIRECT=OS:<computername>\private$\<queuename>  
    
  2. メッセージ テキストをスクリプトに渡すために、String 型の MessageText という名前の Integration Services 変数を作成します。 この変数の値として既定のメッセージを入力します。

  3. スクリプト タスクをデザイン画面に追加して編集します。 [スクリプト タスク エディター][スクリプト] タブで、ReadOnlyVariables プロパティに MessageText 変数を追加し、この変数をスクリプト内で使用できるようにします。

  4. [スクリプトの編集] をクリックして、Microsoft Visual Studio Tools for Applications (VSTA) スクリプト エディターを開きます。

  5. スクリプト プロジェクトに System.Messaging 名前空間への参照を追加します。

  6. スクリプト ウィンドウの内容を、次のコードで置き換えます。

コード

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

参照

メッセージ キュー タスク