共用方式為


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

訊息佇列 (又稱為 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. 建立名為 MessageText 的 Integration Services 變數, String 將消息正文傳遞至腳本。 輸入預設訊息做為變數值。

  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 頁面:

流覽 MSDN 上的 Integration Services 頁面

如需這些更新的自動通知,請訂閱頁面上可用的 RSS 摘要。

另請參閱

訊息佇列工作