Message Queue Task
Applies to: SQL Server SSIS Integration Runtime in Azure Data Factory
The Message Queue task allows you to use Message Queuing (also known as MSMQ) to send and receive messages between SQL Server Integration Services packages, or to send messages to an application queue that is processed by a custom application. These messages can take the form of simple text, files, or variables and their values.
By using the Message Queue task, you can coordinate operations throughout your enterprise. Messages can be queued and delivered later if the destination is unavailable or busy; for example, the task can queue messages for the offline laptop computer of sales representatives, who receive their messages when they connect to the network. You can use the Message Queue task for the following purposes:
Delaying task execution until other packages check in. For example, after nightly maintenance at each of your retail sites, a Message Queue task sends a message to your corporate computer. A package running on the corporate computer contains Message Queue tasks, each waiting for a message from a particular retail site. When a message from a site arrives, a task uploads data from that site. After all the sites have checked in, the package computes summary totals.
Sending data files to the computer that processes them. For example, the output from a restaurant cash register can be sent in a data file message to the corporate payroll system, where data about each waiter's tips is extracted.
Distributing files throughout your enterprise. For example, a package can use a Message Queue task to send a package file to another computer. A package running on the destination computer then uses a Message Queue task to retrieve and save the package locally.
When sending or receiving messages, the Message Queue task uses one of four message types: data file, string, string message to variable, or variable. The string message to variable message type can be used only when receiving messages.
The task uses an MSMQ connection manager to connect to a message queue. For more information, see MSMQ Connection Manager. For more information about Message Queuing, see the MSDN Library.
The Message Queue task requires that the Integration Services service be installed. Some SQL Server components that you may select for installation on the Components to Install page or the Feature Selection page of the SQL Server Installation Wizard install a partial subset of Integration Services components. These components are useful for specific tasks, but the functionality of Integration Services will be limited. For example, the SQL Server Data Tools (SSDT) option installs the Integration Services components required to design a package, but the Integration Services service is not installed, and therefore the Message Queue task is not functional. To ensure a complete installation of Integration Services, you must select Integration Services on the Components to Install page. For more information about installing and running the Message Queue task, see Install Integration Services.
Note
The Message Queue task fails to comply with Federal Information Processing Standard (FIPS) 140-2 when the computer's operating system is configured in FIPS mode and the task uses encryption. If the Message Queue task does not use encryption, the task can run successfully.
Message Types
You can configure the message types that the Message Queue task provides in the following ways:
Data file message specifies that a file contains the message. When receiving messages, you can configure the task to save the file, overwrite an existing file, and specify the package from which the task can receive messages.
String message specifies the message as a string. When receiving messages, you can configure the task to compare the received string with a user-defined string and take action depending on the comparison. String comparison can be exact, case-sensitive or case-insensitive, or use a substring.
String message to variable specifies the source message as a string that is sent to a destination variable. You can configure the task to compare the received string with a user-defined string using an exact, case-insensitive, or substring comparison. This message type is available only when the task is receiving messages.
Variable specifies that the message contains one or more variables. You can configure the task to specify the names of the variables included in the message. When receiving messages, you can configure the task to specify both the package from which it can receive messages and the variable that is the destination of the message.
Sending Messages
When configuring the Message Queue task to send messages, you can use one of the encryption algorithms that are currently supported by the Message Queuing technology, RC2 and RC4, to encrypt the message. Both of these encryption algorithms are now considered cryptographically weak compared to newer algorithms, which Message Queuing technology do not yet support. Therefore, you should consider your cryptography needs carefully when sending messages using the Message Queue task.
Receiving Messages
When receiving messages, the Message Queue task can be configured in the following ways:
Bypassing the message, or removing the message from the queue.
Specifying a time-out.
Failing if a time-out occurs.
Overwriting an existing file, if the message is stored in a Data file.
Saving the message file to a different file name, if the message uses the Data file message type.
Custom Logging Messages Available on the Message Queue Task
The following table lists the custom log entries for the Message Queue task. For more information, see Integration Services (SSIS) Logging.
Log entry | Description |
---|---|
MSMQAfterOpen | Indicates that the task finished opening the message queue. |
MSMQBeforeOpen | Indicates that the task began to open the message queue. |
MSMQBeginReceive | Indicates that the task began to receive a message. |
MSMQBeginSend | Indicates that the task began to send a message. |
MSMQEndReceive | Indicates that the task finished receiving a message. |
MSMQEndSend | Indicates that the task finished sending a message. |
MSMQTaskInfo | Provides descriptive information about the task. |
MSMQTaskTimeOut | Indicates that the task timed out. |
Configuration of the Message Queue Task
You can set properties through SSIS Designer or programmatically. For information about the properties that you can set in SSIS Designer, click the following topic:
For information about programmatically setting these properties, see the documentation for the Microsoft.SqlServer.Dts.Tasks.MessageQueueTask.MessageQueueTask class in the Developer Guide.
Related Tasks
For more information about how to set these properties in SSIS Designer, see Set the Properties of a Task or Container.
Message Queue Task Editor (General Page)
Use the General page of the Message Queue Task Editor dialog box to name and describe the Message Queue task, to specify the message format, and to indicate whether the task sends or receives messages.
Options
Name
Provide a unique name for the Message Queue task. This name is used as the label in the task icon.
Note
Task names must be unique within a package.
Description
Type a description of the Message Queue task.
Use2000Format
Indicate whether to use the 2000 format of Message Queuing (also known as MSMQ). The default is False.
MSMQConnection
Select an existing MSMQ connection manager or click <New connection...> to create a new connection manager.
Related Topics: MSMQ Connection Manager, MSMQ Connection Manager Editor
Message
Specify whether the Message Queue task sends or receive messages. If you select Send message, the Send page is listed in the left pane of the dialog box; if you select Receive message, the Receive page is listed. By default, this value is set to Send message.
Message Queue Task Editor (Send Page)
Use the Send page of the Message Queue Task Editor dialog box to configure a Message Queue task to send messages from a Microsoft SQL Server Integration Services package.
Options
UseEncryption
Indicate whether to encrypt the message. The default is False.
EncryptionAlgorithm
If you choose to use encryption, specify the name of the encryption algorithm to use. The Message Queue task can use the RC2 and RC4 algorithms. The default is RC2.
Note
The RC4 algorithm is only supported for backward compatibility. New material can only be encrypted using RC4 or RC4_128 when the database is in compatibility level 90 or 100. (Not recommended.) Use a newer algorithm such as one of the AES algorithms instead. In the current release of SQL Server, material encrypted using RC4 or RC4_128 can be decrypted in any compatibility level.
Important
These are the encryption algorithms that the Message Queuing (also known as MSMQ) technology supports. Both of these encryption algorithms are now considered cryptographically weak compared to newer algorithms, which Message Queuing does not yet support. Therefore, you should consider your cryptography needs carefully when sending messages using the Message Queue task.
MessageType
Select the message type. This property has the options listed in the following table.
Value | Description |
---|---|
Data file message | The message is stored in a file. Selecting the value displays the dynamic option, DataFileMessage. |
Variable message | The message is stored in a variable. Selecting the value displays the dynamic option, VariableMessage. |
String message | The message is stored in the Message Queue task. Selecting the value displays the dynamic option, StringMessage. |
MessageType Dynamic Options
MessageType = Data file message
DataFileMessage
Type the path of the data file, or click the ellipsis (...) and then locate the file.
MessageType = Variable message
VariableMessage
Type the variable names, or click the ellipsis (...) and then select the variables. Variables are separated by commas.
Related Topics: Select Variables
MessageType = String message
StringMessage
Type the string message, or click the ellipsis (...) and then type the message in the Enter String Message dialog box.
Message Queue Task Editor (Receive Page)
Use the Receive page of the Message Queue Task Editor dialog box to configure a Message Queue task to receive Microsoft Message Queuing (MSMQ) messages.
Options
RemoveFromMessageQueue
Indicate whether to remove the message from the queue after it is received. By default, this value is set to False.
ErrorIfMessageTimeOut
Indicate whether the task fails when the message times out, displaying an error message. The default is False.
TimeoutAfter
If you choose to display an error message on task failure, specify the number of seconds to wait before displaying the time-out message.
MessageType
Select the message type. This property has the options listed in the following table.
Value | Description |
---|---|
Data file message | The message is stored in a file. Selecting the value displays the dynamic option, DataFileMessage. |
Variable message | The message is stored in a variable. Selecting the value displays the dynamic option, VariableMessage. |
String message | The message is stored in the Message Queue task. Selecting the value displays the dynamic option, StringMessage. |
String message to variable | The message Selecting the value displays the dynamic option, StringMessage. |
MessageType Dynamic Options
MessageType = Data file message
SaveFileAs
Type the path of the file to use, or click the ellipsis button (...) and then locate the file.
Overwrite
Indicate whether to overwrite the data in an existing file when saving the contents of a data file message. The default is False.
Filter
Specify whether to apply a filter to the message. This property has the options listed in the following table.
Value | Description |
---|---|
No filter | The task does not filter messages. Selecting the value displays the dynamic option, IdentifierReadOnly. |
From package | The message receives only messages from the specified package. Selecting the value displays the dynamic option, Identifier. |
Filter Dynamic Options
Filter = No filter
IdentifierReadOnly
This option is read-only. It may be blank or contain the GUID of a package when the Filter property was previously set.
Filter = From package
Identifier
If you choose to apply a filter, type the unique identifier of the package from which messages can be received, or click the ellipsis button (...) and then specify the package.
Related Topics: Select a Package
MessageType = Variable message
Filter
Specify whether to apply a filter to messages. This property has the options listed in the following table.
Value | Description |
---|---|
No filter | The task does not filter messages. Selecting the value displays the dynamic option, IdentifierReadOnly. |
From package | The message receives only messages from the specified package. Selecting the value displays the dynamic option, Identifier. |
Variable
Type the variable name, or click <New variable...> and then configure a new variable.
Related Topics: Add Variable
Filter Dynamic Options
Filter = No filter
IdentifierReadOnly
This option is blank.
Filter = From package
Identifier
If you choose to apply a filter, type the unique identifier of the package from which messages can be received, or click the ellipsis button (...) and then specify the package.
Related Topics: Select a Package
MessageType = String message
Compare
Specify whether to apply a filter to messages. This property has the options listed in the following table.
Value | Description |
---|---|
None | Messages are not compared. |
Exact match | Messages must match exactly the string in the CompareString option. |
Ignore case | Message must match the string in the CompareString option, but the comparison is not case sensitive. |
Containing | Message must contain the string in the CompareString option. |
CompareString
Unless the Compare option is set to None, provide the string to which the message is compared.
MessageType = String message to variable
Compare
Specify whether to apply a filter to messages. This property has the options listed in the following table.
Value | Description |
---|---|
None | Messages are not compared. |
Exact match | The message must match exactly the string in the CompareString option. |
Ignore case | The message must match the string in the CompareString option but the comparison is not case sensitive. |
Containing | The message must contain the string in the CompareString option. |
CompareString
Unless the Compare option is set to None, provide the string to which the message is compared.
Variable
Type the name of the variable to hold the received message, or click <New variable...> and then configure a new variable.
Related Topics: Add Variable
Select Variables
Use the Select Variables dialog box to specify the variables to use in a send message operation in the Message Queue task. The Available Variables list includes system and user-defined variables that are in the scope of the Message Queue task or its parent container. The task uses the variables in the Selected Variables list.
Options
Available Variables
Select one or more variables.
Selected Variables
Select one or more variables.
Right Arrows
Move selected variables to the Selected Variables list.
Left Arrows
Move selected variables back to the Available Variables list.
New Variable
Create a new variable.
Related Topics: Add Variable