다음을 통해 공유


스크립트 태스크를 사용하여 원격 프라이빗 메시지 큐로 보내기

적용 대상: Azure Data Factory의 SQL Server SSIS Integration Runtime

메시지 큐(MSMQ라고도 함)를 사용하면 개발자가 메시지를 보내고 받아 애플리케이션 프로그램과 빠르고 안정적으로 통신할 수 있습니다. 메시지 큐는 로컬 컴퓨터나 원격 컴퓨터에 있을 수 있으며 퍼블릭 큐이거나 프라이빗 큐일 수 있습니다. Integration Services에서 MSMQ 연결 관리자 및 메시지 큐 작업은 원격 컴퓨터의 프라이빗 큐에 보내는 것을 지원하지 않습니다. 그러나 스크립트 태스크를 사용하면 원격 프라이빗 메시지 큐에 메시지를 쉽게 보낼 수 있습니다.

참고 항목

여러 패키지에서 더 쉽게 다시 사용할 수 있는 작업을 만들려면 이 스크립트 태스크 샘플의 코드를 사용자 지정 작업의 시작점으로 사용하는 것이 좋습니다. 자세한 내용은 사용자 지정 작업 개발을 참조하세요.

설명

다음 예제에서는 System.Messaging 네임스페이스의 개체 및 메서드와 함께 기존 MSMQ 연결 관리자를 사용하여 패키지 변수에 포함된 텍스트를 원격 프라이빗 메시지 큐로 보냅니다. 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. 스크립트 편집을 클릭하여 VSTA(Microsoft Visual Studio Tools for Applications) 스크립트 편집기를 엽니다.

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

참고 항목

메시지 큐 태스크