188.8.131.52.9 Sending a Trace Message
If the UserMessage.BaseHeader.Flags.TR bit field is set, the protocol MUST send a report message to the queue specified by the UserMessage.DebugHeader.QueueIdentifier field. Report messages are utilized by application logic to track the delivery of sent messages.
TraceMessage.Class is set to Report.
TraceMessage.DeliveryGuarantee is set to Express.
TraceMessage.Label is set to a Unicode string in the format specified by the following ABNF rules.
label = qm-id %x3A message-id %x3A hops SP "received by" SP computer SP "at" SP time-date %x0000 qm-id = 4HEXDIG ; MUST be set to the first four hexadecimal digits ; of the source queue identifier message-id = 8HEXDIG ; hexadecimal form of the UserHeader.MessageID ; field hops = 2HEXDIG ; MUST be set to the UserHeader.Flags.RC field computer = GUID ; MUST be set to UserHeader.SourceQueueManager field time-date = hour SP ("AM" / "PM") SP date hour = 2DIGIT ":" 2DIGIT [":" 2DIGIT] ; ANSI and Military date = day "," month SP 2DIGIT SP year; day, month day year month = "Jan" / "Feb" / "Mar" / "Apr" / "May" / "Jun" / "Jul" / "Aug" / "Sep" / "Oct" / "Nov" / "Dec" day = "Mon" / "Tue" / "Wed" / "Thu" / "Fri" / "Sat" / "Sun" year = 2DIGIT GUID = 8HEXDIG "-" 4HEXDIG "-" 4HEXDIG "-" 4HEXDIG "-" 12HEXDIG ; A GUID the form XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX ; Where each X is a Hex digit
TraceMessage.Body is set to a Unicode string in the format specified by the following ABNF rules.
Report = "<MESSAGE ID>" id "</MESSAGE ID>" CR LF "<TARGET QUEUE>" queue "</TARGET QUEUE>" CR LF id = 8HEXDIG ; MUST be set to UserHeader.MessageID field queue = queue-format; MUST be set to UserHeader.DestinationQueue field
The ABNF rule queue-format is as specified in [MS-MQMQ] section 2.1.
The protocol MUST generate an Open Queue ([MS-MQDMPR] section 184.108.40.206.5) event with the following arguments:
iFormatName := TraceMessage.DestinationQueueFormatName
iRequiredAccess := QueueAccessType.SendAccess
iSharedMode := QueueShareMode.DenyNone
If the rStatus returned by the Open Queue event is not MQ_OK (0x00000000), the protocol MUST discard TraceMessage; otherwise, the protocol MUST generate an Enqueue Message To An Open Queue ([MS-MQDMPR] section 220.127.116.11.27) event with the following arguments:
iOpenQueueDescriptor := the rOpenQueueDescriptor returned by the Open Queue event
iMessage := TraceMessage