共用方式為


以指令碼工作傳送至遠端私用訊息佇列

訊息佇列 (又稱為 MSMQ) 能夠讓開發人員容易藉由傳送和接收訊息來與應用程式快速且確實地通訊。 訊息佇列有可能位於本機電腦或是遠端電腦上,而且可能是公用或私用的。 在 Integration Services 中,MSMQ 連接管理員與訊息佇列工作不支援傳送到遠端電腦上的私用佇列。 不過,透過使用指令碼工作,就可以很輕鬆地將訊息傳送到遠端私用佇列。

[!附註]

如果您想要建立可更輕鬆地在多個封裝之間重複使用的工作,請考慮使用此指令碼工作範例中的程式碼做為自訂工作的起點。 如需詳細資訊,請參閱<開發自訂工作>。

說明

下列範例使用現有的 MSMQ 連接管理員,加上來自 System.Messaging 命名空間的物件與方法,將包含在封裝變數中的文字傳送到遠端私用訊息佇列。 呼叫 MSMQ 連接管理員的 M:Microsoft.SqlServer.Dts.ManagedConnections.MSMQConn.AcquireConnection(System.Object) 方法會傳回 MessageQueue 物件,其 Send 方法會完成此項工作。

設定此指令碼工作範例

  1. 使用預設名稱建立 MSMQ 連接管理員。 以下列格式設定有效的遠端私用佇列路徑:

    FORMATNAME:DIRECT=OS:<computername>\private$\<queuename>
    
  2. 建立類型為 String 且名為 MessageText 的 Integration Services 變數。 輸入預設訊息做為變數值。

  3. 將指令碼工作加入設計介面並編輯它。 在 [指令碼工作編輯器][指令碼] 索引標籤上,將 MessageText 變數加入 [ReadOnlyVariables] 屬性,以確定變數在指令碼中是可以使用。

  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;

        }

}
Integration Services 圖示 (小) 掌握 Integration Services 的最新狀態

若要取得 Microsoft 的最新下載、文件、範例和影片以及社群中的選定解決方案,請瀏覽 MSDN 上的 Integration Services 頁面:


若要得到這些更新的自動通知,請訂閱該頁面上所提供的 RSS 摘要。

請參閱

概念

訊息佇列工作