3.1.1.12 Message

The Message ADM element describes the attributes of a message. This ADM element MUST contain the following ADM attributes:

LookupIdentifier: A 64-bit unsigned integer that both uniquely identifies and indicates the relative position of the message within the scope of the MessagePositionList ADM attribute of the Queue (section 3.1.1.2) ADM element instance.

Identifier: An OBJECTID ([MS-MQMQ] section 2.2.8) that uniquely identifies the message in the scope of the entire message queuing system.

AllowPeekWhenLocked: A Boolean indicating whether the message is visible to peek operations even if the State ADM attribute of the MessagePosition (section 3.1.1.11) ADM element instance referenced by the MessagePositionReference ADM attribute equals Locked. The default value of this ADM attribute is False.

  • True: if the message is available for peek operations even if the State ADM attribute of the MessagePosition ADM element instance referenced by the MessagePositionReference ADM attribute equals Locked.

  • False: if the message is not available for peek operations when the State ADM attribute of the MessagePosition ADM element instance referenced by the MessagePositionReference ADM attribute equals Locked.

ApplicationDeadletterQueue: A string that contains the path name for an application-specific dead-letter queue.<10> The format of the Pathname ADM attribute is specified in [MS-MQMQ] section 2.1.1. If a valid path name is specified and delivery has failed for the message and the NegativeJournalingRequested ADM attribute of a Message ADM element instance is True, the queue manager SHOULD<11> store this message in the queue specified by this ADM attribute. The default value of this ADM attribute is an empty string.

ArrivalTime: The UTC date/time when this Message ADM element instance was added to the MessagePositionList ADM attribute of the Queue ADM element instance.

Class: An enumeration that specifies the message classification. This enumeration MUST have either one of the following values or a custom value set by the sending application to serve an application-specific purpose. The default value of this ADM attribute is Normal.

  • Normal: The message originated from an application.

  • Report: The message was generated by the route tracing feature of the message transfer process. Messages of this type are generated when messages represented by Message ADM element instances for which the TracingRequested ADM attribute is True arrive at queues along the route to the final destination.

  • AckReachQueue: The message was generated as a result of a message arriving successfully at its destination queue.

  • OrderAck: The message was generated as a result of a transactional message arriving successfully at its destination queue.

  • AckReceive: The message was generated as a result of a message being retrieved successfully by a message queuing application.

  • NackBadDestQueue: The message was generated to indicate that delivery of a message was canceled because the destination queue was unreachable.

  • NackPurged: The message was generated to indicate that a message was deleted prior to being received by a message queuing application.

  • NackReachQueueTimeout: The message was generated to indicate that the timer represented by the TimeToReachQueue ADM attribute of a Message ADM element instance expired before a message arrived at the destination queue.

  • NackQueueExceedQuota: The message was generated to indicate that a message was not inserted into the destination queue, because doing so would exceed the quota.

  • NackAccessDenied: The message was generated to indicate that a message was not inserted into the destination queue, because the user identified by the SenderIdentifier ADM attribute of that Message ADM element instance did not have sufficient rights to insert that message.

  • NackHopCountExceeded: The message was generated to indicate that delivery of a message was canceled because it exceeded the maximum number of allowed routing hops.

  • NackBadSignature: The message was generated to indicate that a message was not inserted into the destination queue, because the digital signature accompanying that message was not validated successfully.

  • NackBadEncryption: The message was generated to indicate that a message was not inserted into the destination queue, because that message could not be decrypted successfully.

  • NackCouldNotEncrypt: The message was generated to indicate that a message was canceled prior to delivery, because that message could not be encrypted successfully.

  • NackNotTransactionalQueue: The message was generated to indicate that a message was not inserted into the destination queue, because that message was sent as part of a transaction, but the Transactional ADM attribute of the Queue ADM element instance representing the destination queue was set to False.

  • NackNotTransactionalMessage: The message was generated to indicate that a message was not inserted into the destination queue, because the message was not sent as part of a transaction, but the Transactional ADM attribute of the Queue ADM element instance representing the destination queue was set to True.

  • NackUnsupportedCryptoProvider: The message was generated to indicate that a message was not inserted into the destination queue, because the destination queue manager does not support a cryptography library sufficient to decrypt that message or validate its signature.

  • NackSourceComputerGuidChanged: The message was generated to indicate that delivery of a message was canceled because the Identifier ADM attribute of the QueueManager (section 3.1.1.1) ADM element instance representing the queue manager that originated the message has changed.

  • NackQueueDeleted: The message was generated to indicate that the destination queue was deleted before a message could be received by a message queuing application.

  • NackQueuePurged: The message was generated to indicate that the destination queue was purged before a message could be received by a message queuing application.

  • NackReceiveTimeout: The message was generated to indicate that the timer represented by the TimeToBeReceived ADM attribute of a Message ADM element instance representing the message expired before the message could be received from the destination queue by a message queuing application.

  • NackReceiveTimeoutAtSender: The message was generated to indicate that the timer represented by the TimeToBeReceived ADM attribute of a Message ADM element instance representing the message expired before the message could be inserted into the destination queue.

  • NackReceiveRejected: The message was generated to indicate that the message has been rejected by a receiving application.

PrivacyLevel: An enumeration that indicates the manner in which the message body is encrypted during the message transfer process. This enumeration MUST have one of the following values. The default value of this ADM attribute is None.

  • None: The message MUST NOT be encrypted by the message transfer process.

  • Base: During the message transfer process, the message body MUST be protected from observation by using 40-bit encryption.

  • Enhanced: During the message transfer process, the message body MUST be protected from observation by using 128-bit encryption.

  • Advanced: During the message transfer process, the message body MUST be protected from observation by using Advanced Encryption Standard (AES).

AuthenticationLevel: An enumeration that indicates the manner in which the message is cryptographically signed. This enumeration MUST have one the following values. The default value of this ADM attribute is None.

  • None: The message MUST NOT be digitally signed for the message transfer process.

  • Sig10: The message MUST be digitally signed for the message transfer process using the MSMQ 1.0 digital signature.

  • Sig20: The message MUST be digitally signed for the message transfer process using the MSMQ 2.0 digital signature.

  • Sig30: The message MUST be digitally signed for the message transfer process using the MSMQ 3.0 digital signature.

  • XmlSig: The message MUST be digitally signed for the message transfer process using XML digital signatures. The following ADM attributes of the Message ADM element MUST be used to compute the digital signature:

  • Body

  • Extension

DeliveryGuarantee: An enumeration that indicates whether the message will be recoverable in the event of a service interruption in the message queuing system. This enumeration MUST have one of the following values. The default value of this ADM attribute is Express.

  • Express: The message MAY be recovered in the event of a service interruption in the message queuing system.

  • Recoverable: The message MUST be recovered in the event of service interruptions in the message queuing system.

TracingRequested: A Boolean value that indicates whether the route tracing feature of the message transfer process is enabled for the message. The default value of this ADM attribute is False.

  • True: The message tracing feature of the message transfer process is enabled.

  • False: The message tracing feature of the message transfer process is disabled.

TracingQueueIdentifier: Contains the value of the Identifier ADM attribute of a Queue ADM element instance representing the queue that stores trace messages. The default value of this ADM attribute is GUID_NULL.

Priority: A numeric value from zero (0) to seven (7) that is used as an input to determine the value of the LookupIdentifier ADM attribute. Zero (0) is the lowest priority, and seven (7) is the highest. The default value of this ADM attribute is 3.

PositiveJournalingRequested: A Boolean value that indicates whether positive journaling is requested for the message. The default value of this ADM attribute is False.

  • True: The source queue manager MUST copy the message to the system queue journal referenced by the SystemJournalQueue ADM attribute of the QueueManager ADM element instance representing the source queue manager, if the message is delivered successfully to the destination queue. If the quota for the system queue journal is exceeded, the message MUST be discarded.

  • False: The queue manager MUST NOT journal the message on successful delivery.

NegativeJournalingRequested: A Boolean value that indicates whether negative journaling is requested for the message. The default value of this ADM attribute is False.

  • True: The source queue manager MUST copy the message to the dead-letter queue referenced by the SystemDeadletterQueue ADM attribute of the QueueManager ADM element instance representing the source queue manager, if the message is not delivered successfully to the destination queue. If the quota for the dead-letter queue is exceeded, the message MUST be discarded.

  • False: The queue manager MUST NOT journal the Message if the delivery fails.

ResponseQueueFormatName: A format name ([MS-MQMQ] section 2.1) that specifies the response queue for the message. The default value of this ADM attribute is empty.

ResponseMultiQueueFormatName: A collection of queue names ([MS-MQMQ] section 2.1) that specify multiple response queues for the message. The default value of this ADM attribute is empty.

DestinationQueueFormatName: A format name ([MS-MQMQ] section 2.1) that specifies the destination queue for the message. This format name MUST NOT be a multiple-element format name. If the DestinationMultiQueueFormatName ADM attribute is specified, DestinationQueueFormatName corresponds to one of the queue names in the multiple destination queues.

DestinationMultiQueueFormatName: A collection of queue names ([MS-MQMQ] section 2.1) that specify multiple destination queues for the message. A queue name that is part of this collection MUST NOT be a multiple-element format name.

AdministrationQueueFormatName: A format name ([MS-MQMQ] section 2.1) that specifies the administration queue for the message. The default value of this ADM attribute is empty.

AdministrationMultiQueueFormatName: A collection of queue names ([MS-MQMQ] section 2.1) that specify multiple administration queues for the message. The default value of this ADM attribute is empty.

MultipleDestinationSignature: If any of the following ADM attributes

  • DestinationMultiQueueFormatName

  • ResponseMultiQueueFormatName

  • AdministrationMultiQueueFormatName

    is specified and the AuthenticationLevel ADM attribute contains the Sig30 value (indicating that the message MUST be signed with an MSMQ 3.0 digital signature), the specified ADM attribute MUST be used instead of the Signature ADM attribute.

    The MultipleDestinationSignature ADM attribute SHOULD contain the multiple-destination digital signature, which is the hash specified by the HashAlgorithm ADM attribute, produced using data specific for an MSMQ 3.0 digital signature ([MS-MQMQ] section 2.5.3) and signed with the private key corresponding to the SenderCertificate ADM attribute. The usage and mapping of this ADM attribute are specified in [MS-MQQB] section 3.1.7.1.1. The default value of this ADM attribute is empty.

ApplicationTag: A numeric value supplied by the message queuing application. This value can be interpreted by the message queuing application that receives this message. The server MUST NOT interpret or modify this ADM attribute. The default value is zero.

SourceMachineIdentifier: A GUID that contains the value of the Identifier ADM attribute of the QueueManager ADM element instance representing the queue manager that first accepted the message from the message queuing application.

Body: A binary large object (BLOB) that contains the message payload provided by the message queuing application. Message queuing applications can use this ADM element attribute for any application-specific purpose. The server MUST NOT interpret or modify this ADM attribute, except to encrypt the value during the message transfer process as specified by the PrivacyLevel ADM attribute. The default value of this ADM attribute is empty.

BodyType: A numeric value supplied by the message queuing application. This value can be interpreted by the message queuing application that receives this message. The server MUST NOT interpret or modify this ADM attribute. The default value of this ADM attribute is zero.

CorrelationIdentifier: An OBJECTID ([MS-MQMQ] section 2.2.8). This value is supplied by the message queuing application and can be interpreted by the message queuing application that receives the message. The server MUST NOT interpret or modify this ADM attribute. The default value of CorrelationIdentifier.Lineage is GUID_NULL; the default value of CorrelationIdentifier.Uniquifier is 0x00000000.

AcknowledgementsRequested: A list of enumerations that indicate the classifications of administrative acknowledgment messages that MUST be generated by the message transfer process while delivering the message. The enumerations in the list MUST be one of the following values. The default value of this ADM attribute is None.

  • None: The queue manager MUST NOT generate an administrative acknowledgment for this message.

  • AckPosArrival: The queue manager MUST generate an administrative acknowledgment Message when this message is inserted successfully in the destination queue.

  • AckPosReceive: The queue manager MUST generate an administrative acknowledgment when this message is received successfully from a queue.

  • AckNegArrival: The queue manager MUST generate an administrative acknowledgment message if this message cannot be delivered successfully to the destination queue.

  • AckNegReceive: The queue manager MUST generate an administrative acknowledgment message if the message is not received successfully from the destination queue by a message queuing application.

  • AckNackReachQueue: Same as AckNegArrival.

  • AckFullReachQueue: The queue manager MUST generate an administrative acknowledgment when the message is inserted successfully in the destination queue, or when the message cannot be delivered successfully to the destination queue.

  • AckNackReceive: The queue manager MUST generate an administrative acknowledgment message if the message cannot be delivered successfully to the destination queue, or if the message is not received successfully from the destination queue by a message queuing application.

  • AckFullReceive: The queue manager MUST generate an administrative acknowledgment message if the message cannot be delivered successfully to the destination queue, or if the message is received successfully from the destination queue, or if the message is not received successfully from the destination queue by a message queuing application.

Label: A text string that MUST NOT exceed 249 characters in length. This value is supplied by the message queuing application. This value can be interpreted by the message queuing application that receives the message. The server MUST NOT interpret or modify this ADM attribute. The default value is an empty string.

SentTime: A UTC date/time value that indicates when the message was sent.

TimeToReachQueue: A numeric time span value in seconds that indicates when the message will expire, relative to the SentTime ADM attribute, while it is in transit to the destination queue. The default value of this ADM attribute when this key is absent SHOULD<12> be 0x54600 (345,600 seconds = 4 days).

TimeToBeReceived: A numeric time span value in seconds that indicates when the message will expire relative to the SentTime ADM attribute after it arrives in the destination queue, and while it is waiting to be received by a client of this protocol. The default value of this ADM attribute is 0xFFFFFFFF.

HashAlgorithm: An enumeration that indicates the algorithm used to generate the hash for signing the message. This enumeration MUST have one of the following values.<13>  The default value of this ADM attribute SHOULD<14> be SHA1.

  • MD2: Specifies the MD2 algorithm, as defined in [RFC1319].

  • MD4: Specifies the MD4 algorithm, as defined in [RFC1320].

  • MD5: Specifies the MD5 algorithm, as defined in [RFC1321].

  • SHA1: Specifies the SHA-1 algorithm, as defined in [RFC3110].

  • SHA: Specifies the SHA-1 algorithm, as defined in [RFC3110].

  • SHA_256: Specifies the SHA-256 algorithm, as defined in [FIPS180-2].

  • SHA_512: Specifies the SHA-512 algorithm, as defined in [FIPS180-2].

EncryptionAlgorithm: An enumeration that indicates the algorithm employed by the message transfer system to encrypt or decrypt the Body ADM attribute. This enumeration can have the following values.<15> The default value of this ADM attribute SHOULD<16> be RC4.

  • RSA: Specifies the RSA signature algorithm as specified in [RFC8017].

  • DSS: Specifies the Digital Signature Standard as specified in [FIPS186].

  • RSA_KEYS: Specifies the RSA key exchange algorithm as specified in [RFC8017].

  • DES: Specifies the Data Encryption Standard as specified in [FIPS46-3].

  • RC2: Specifies the RC2 algorithm as specified in [RFC2268].

  • AES256: Specifies the AES 256 algorithm as specified in [FIPS197].

  • AES128: Specifies the AES 128 algorithm as specified in [FIPS197].

  • AES192: Specifies the AES 192 algorithm as specified in [FIPS197].

  • RC4: Specifies the RC4 algorithm as specified in [RFC4757].

  • SEAL: Specifies the Software-Optimized Encryption Algorithm as defined in [SEAL-SPRINGER].

DestinationQueueManagerIdentifier: Contains the value of the Identifier ADM attribute of the QueueManager ADM element instance representing the destination queue manager.

DestinationQueueType: An enumeration that defines the type of the destination queue specified by the DestinationQueueFormatName ADM attribute. It MUST contain one of the following values:

  • PrivateQueue: The queue is private and is located on the destination queue manager.

  • PublicQueue: The queue is public.

  • DirectQueue: The format name for the administration queue is specified as a direct format name ([MS-MQMQ] section 2.1.2).

    AdministrationQueueType: An enumeration that defines the type of the administration queue specified by the AdministrationQueueFormatName ADM attribute. It MUST contain one of the following values. The default value of this ADM attribute is None.

  • None: No administration queue is specified.

  • PrivateQueueOnSource: The administration queue is private and is located on the source queue manager.

  • PrivateQueueOnDestination: The administration queue is private and is located on the destination queue manager.

  • PublicQueue: The administration queue is public.

  • PrivateQueueOnOther: The administration queue is private and is located on a queue manager other than the destination queue manager or the source queue manager.

  • DirectQueue: The format name for the queue is specified as a direct format name ([MS-MQMQ] section 2.1.2).

ResponseQueueType: An enumeration that defines the type of the response queue specified by the ResponseQueueFormatName ADM attribute. It MUST contain one of the following values. The default value of this ADM attribute is None.

  • None: No response queue is specified.

  • SameAsAdministrationQueue: The response queue type is the same as the type specified by the AdministrationQueueType ADM attribute, and the response queue is specified by the AdministrationQueueFormatName ADM attribute.

  • PrivateQueueOnDestination: The response queue is private and is located on the destination queue manager.

  • PrivateQueueOnSource: The response queue is private and is located on the source queue manager.

  • PrivateQueueOnAdmin: The response queue is private and is located on the same queue manager as the administration queue.

  • PublicQueue: The response queue is public.

  • PrivateQueueOnOther: The response queue is private and is hosted on a queue manager other than the source queue manager, the destination queue manager, or the queue manager that hosts the administration queue.

  • DirectQueue: The format name for the response queue is specified as a direct format name ([MS-MQMQ] section 2.1.2).

SenderIdentifier: Contains the identifier of the user or the source queue manager that sent the message. If the AuthenticationLevel ADM attribute indicates that the message was signed, message queuing applications that consume this message can consider this value to be authentic. The default value of this ADM attribute is the security identifier (SID) of the current user.

SenderCertificate: If the AuthenticationLevel ADM attribute indicates that the message was signed, this field contains an X.509 certificate [RFC3280] for the user identified by the SenderIdentifier ADM attribute. The value can be assigned by a message queuing application or by the queue manager. The default value of this ADM attribute is empty.

SenderIdentifierType: An enumeration that indicates the format of the SenderIdentifier ADM attribute. This enumeration MUST have one of the following values. The default value of this ADM attribute is Sid.

  • None: The identity of the sending user is not included in the message. For the purposes of authorization, the sender identity for the message is the anonymous user.

  • Sid: The SenderIdentifier ADM attribute contains the security identifier (SID) for the sending user.

  • QueueManagerIdentifier: The SenderIdentifier ADM attribute contains the value of the Identifier ADM attribute of the QueueManager ADM element instance representing the source queue manager.

Extension: A BLOB that contains a secondary message payload provided by the message queuing application. Message queuing applications can use this ADM attribute for any application-specific purpose. The server MUST NOT interpret or modify this ADM attribute. The default value is empty.

ConnectorTypeIdentifier: A GUID that indicates whether the message was sent by a connector application. The specific GUID value MUST be ignored by the server. No standard values for this GUID are defined. The default value of this ADM attribute is GUID_NULL.

ConnectorQueueManagerIdentifier: A GUID that contains the value of the Identifier ADM attribute of the QueueManager ADM element instance representing the queue manager from which a connector application reads messages.

TransactionStatusQueueFormatName: A format name string that identifies the location where a message indicating the in-order arrival of the message is sent by the message transfer process. This value is read-only for message queuing applications, and the value is assigned by the queue manager during the message transfer process. Beyond providing the value to clients of this protocol, the server MUST ignore this ADM attribute.

SymmetricKey: A symmetric key of the type specified by the EncryptionAlgorithm ADM attribute, encrypted such that it can be read only by the queue manager that owns the destination queue. The SymmetricKey, prior to being encrypted, is used to encrypt the body of the message. This value is typically assigned by the queue manager, although it MAY be assigned by a connector application.

Signature: If the AuthenticationLevel ADM attribute indicates that the message was signed with an MSMQ 1.0 digital signature or an MSMQ 2.0 digital signature, this ADM attribute contains the hash specified by the HashAlgorithm ADM attribute, produced using data specific for an MSMQ 1.0 digital signature ([MS-MQMQ] section 2.5.1) or an MSMQ 2.0 digital signature ([MS-MQMQ] section 2.5.2) and signed with the private key corresponding to the SenderCertificate ADM attribute. This value is typically assigned by the queue manager, although it MAY be assigned by a connector application.

AuthenticationProviderType: A numeric value that indicates the type of cryptographic provider used to sign the message. This value is typically assigned by the message queuing system, in which case only one standard value is defined: 0x1. Alternatively, this ADM attribute MAY be assigned by a connector application, in which case the ADM attribute is application-specific, and the server MUST ignore the value.

AuthenticationProviderName: A string value that indicates the name of the cryptographic provider used to sign the message. This value is typically assigned by the message queuing system, in which case two standard values are defined as follows.

  • "Microsoft Base Cryptographic Provider, v1.0"

  • "Microsoft Enhanced Cryptographic Provider, v1.0"

Alternatively, this ADM attribute MAY be assigned by a connector application, in which case the field is application-specific, and the server MUST ignore the value.

TransactionalMessageSequenceIdentifier: A TxSequenceId ([MS-MQMQ] section 2.2.18.1.2). For non-transactional messages, this ADM attribute is empty. For transactional messages, this ADM attribute contains two monotonically increasing numeric values: Ordinal and TimeStamp. These values are typically assigned by the queue manager during the message transfer process, although they MAY be assigned by a connector application.

TransactionSequenceNumber: A numeric value that specifies the sequence number for this message within a stream of messages that are received within the same transaction.

TransactionPreviousSequenceNumber: A numeric value that specifies the sequence number for the previous message within a stream of messages that are received within the same transaction.

TransactionIdentifier: An identifier that correlates the message with the transaction under which it was captured.

FinalAckRequired: A Boolean value that indicates whether the queue manager MUST send a final acknowledgment message to the sender when the message is removed successfully from the queue.

  • True: If the queue manager MUST send a final acknowledgment message to the sender when this message is removed successfully from the queue.

  • False: If the queue manager MUST NOT send a final acknowledgment message to the sender.

FirstInTransaction: A Boolean value that indicates whether the message is the first in a set of messages represented by Message ADM element instances that have identical values of the TransactionalMessageSequenceIdentifier ADM attribute.

  • True: If the message is the first in the set.

  • False: If the message is not the first in the set.

LastInTransaction: A Boolean value that indicates whether the message is the last in a set of messages represented by Message ADM element instances that have identical values of the TransactionalMessageSequenceIdentifier ADM attribute.

  • True: If the message is the last in the set.

  • False: If the message is not the last in the set.

SoapEnvelope: This ADM attribute contains a string value that contains the SOAP envelope for an SRMP message. This value is assigned by the message transfer process and is read-only for clients of this protocol. Beyond providing the value to clients of this protocol, the server MUST ignore this ADM attribute.

SoapCompoundMessage: This ADM attribute contains a string value that contains the entire contents of an SRMP message, including both the SOAP envelope and SOAP attachments associated with it. This value is assigned by the message transfer process and is read-only for clients of this protocol. Beyond providing the value to clients of this protocol, the server MUST ignore this ADM attribute.

SoapBody: This ADM attribute contains a string value that represents the SOAP body in the SoapEnvelope ADM attribute.

SoapHeader: This ADM attribute contains a string value that represents the SOAP header in the SoapEnvelope ADM attribute.

MessagePositionReference: A reference to the MessagePosition ADM element instance that contains this Message ADM element instance.

If the DeliveryGuarantee ADM attribute is set to Recoverable, all of the ADM attributes of the Message ADM element MUST be treated as Persistent.