消息佇列工作可讓您使用消息佇列(也稱為 MSMQ)在 SQL Server Integration Services 套件之間傳送和接收訊息,或將訊息傳送至自定義應用程式所處理的應用程式佇列。 這些訊息可以採用簡單文字、檔案或變數及其值的形式。
藉由使用消息佇列工作,您可以協調整個企業的作業。 如果目的地無法使用或忙碌,則可以稍後將訊息排入佇列並傳遞;例如,工作可以將銷售代表的訊息排入佇列,供離線的筆記型電腦使用,這些銷售代表連線到網路時會收到訊息。 您可以針對下列目的使用消息佇列工作:
延遲工作執行,直到其他套件存入為止。 例如,在每一個零售點的夜間維護之後,訊息佇列任務會將訊息傳送至公司電腦。 在公司計算機上執行的套件包含消息佇列工作,每個工作都等候來自特定零售網站的訊息。 當收到來自網站的訊息時,任務立即上傳該網站的資料。 在所有網站完成簽入之後,套件會計算摘要總計。
將數據檔案傳送至處理它們的電腦。 例如,餐廳收銀機的輸出可以在數據檔訊息中傳送至公司薪資系統,其中會擷取每個服務員秘訣的相關數據。
在整個企業中分發檔案。 例如,封裝可以使用消息佇列工作,將封裝檔案傳送到另一部計算機。 在目的地電腦上運行的封裝接著會使用訊息佇列任務,將封裝擷取並本地儲存。
傳送或接收訊息時,消息佇列工作會使用四種訊息類型的其中一種:數據檔、字串、字串訊息至變數或變數。 字串訊息至變數訊息類型只能在接收訊息時使用。
工作使用 MSMQ 連接管理員來連接到訊息佇列。 如需詳細資訊,請參閱 MSMQ 連接管理員。 如需消息佇列的詳細資訊,請參閱 MSDN 連結庫。
消息佇列工作需要安裝 Integration Services 服務。 在 要安裝的元件 頁面或 SQL Server 安裝精靈的 功能選取 頁面上,您可能會選擇安裝某些 SQL Server 元件,這些元件會安裝 Integration Services 元件的部份子集。 這些元件對於特定工作很有用,但 Integration Services 的功能會受到限制。 例如,SQL Server Data Tools (SSDT) 選項會安裝設計套件所需的 Integration Services 元件,但未安裝 Integration Services 服務,因此消息佇列工作無法運作。 若要確保 Integration Services 的完整安裝,您必須在 [要安裝的元件 ] 頁面上選取 [Integration Services]。 如需安裝和執行消息佇列工作的詳細資訊,請參閱 安裝 Integration Services。
備註
當計算機的作系統設定為 FIPS 模式,且工作使用加密時,消息佇列工作無法符合美國聯邦資訊處理標準 (FIPS) 140-2。 如果消息佇列工作不使用加密,工作可以順利執行。
訊息類型
您可以透過下列方式設定消息佇列工作所提供的訊息類型:
Data file訊息指定檔案中包含訊息。 接收訊息時,您可以設定工作來儲存檔案、覆寫現有的檔案,以及指定工作可以接收訊息的套件。Stringmessage 會將訊息指定為字串。 接收訊息時,您可以設定工作來比較接收的字串與使用者定義的字串,並根據比較採取動作。 字串比較可以是精確匹配、區分大小寫、不區分大小寫,或是使用子字串匹配。String message to variable將來源訊息指定為傳送至目的地變數的字串。 您可以設定工作,以使用精確比較、不區分大小寫比較或子字串比較來比較收到的字串與使用者定義的字串。 只有在工作收到訊息時,才能使用此訊息類型。Variable指定訊息包含一或多個變數。 您可以設定工作來指定訊息中包含的變數名稱。 接收訊息時,您可以設定工作來指定可以接收訊息的封裝和作為訊息目的地的變數。
傳送訊息
設定消息佇列工作以傳送訊息時,您可以使用消息佇列技術 RC2 和 RC4 目前支援的其中一種加密演算法來加密訊息。 相較於較新的演算法,這兩種加密演算法現在都被視為密碼編譯弱,消息佇列技術尚不支持這些演算法。 因此,在使用消息佇列工作傳送訊息時,您應該仔細考慮密碼編譯需求。
接收訊息
接收訊息時,可以透過下列方式設定消息佇列工作:
略過訊息,或從佇列中移除訊息。
指定超時時間
因為逾時而失敗。
如果訊息儲存在
Data file中,則會覆寫現有的檔案。如果訊息使用
Data file message類型,請將訊息檔案儲存至不同的檔名。
可在消息佇列任務中使用的自定義記錄訊息
下表列出訊息佇列任務的自訂日誌項目。 如需詳細資訊,請參閱 Integration Services (SSIS) 記錄 和 自訂記錄訊息。
| 記錄項目 | 說明 |
|---|---|
MSMQAfterOpen |
表示工作已完成開啟消息佇列。 |
MSMQBeforeOpen |
表示任務已開始開啟消息佇列。 |
MSMQBeginReceive |
表示任務開始接收訊息。 |
MSMQBeginSend |
表示任務開始傳送訊息。 |
MSMQEndReceive |
表示任務已完成接收訊息。 |
MSMQEndSend |
表示工作已完成傳送訊息。 |
MSMQTaskInfo |
提供有關工作的描述性資訊。 |
MSMQTaskTimeOut |
表示任務超時。 |
消息佇列工作的設定
您可以透過 SSIS 設計師或以程式設計方式設定屬性。 若需您可以在 SSIS 設計工具中設定之屬性相關資訊,請參閱以下任一主題:
如需以程式設計方式設定這些屬性的詳細資訊,請參閱開發人員指南中的 Microsoft.SqlServer.Dts.Tasks.MessageQueueTask.MessageQueueTask 類別的檔。
相關工作
如需如何在 SSIS 設計工具中設定這些屬性的詳細資訊,請參閱 設定工作或容器的屬性。