MQMD - Descriptor de mensaje
La estructura MQMD contiene la información de control que acompaña a los datos de aplicación cuando un mensaje viaja entre las aplicaciones de envío y recepción. La estructura es un parámetro de entrada/salida en las llamadas MQGET, MQPUT y MQPUT1 .
Disponibilidad
Todos los sistemas IBM® MQ , más IBM MQ MQI clients conectados a estos sistemas.
Versión
La versión actual de MQMD es MQMD_VERSION_2. Las aplicaciones que están pensadas para ser portables entre varios entornos deben asegurarse de que la versión necesaria de MQMD esté soportada en todos los entornos afectados. Los campos que existen sólo en las versiones más recientes de la estructura se identifican como tales en las descripciones siguientes.
Los archivos de cabecera, COPY e INCLUDE proporcionados para los lenguajes de programación soportados contienen la versión más reciente de MQMD soportada por el entorno, pero con el valor inicial del campo Version establecido en MQMD_VERSION_1. Para utilizar campos que no están presentes en la estructura version-1 , la aplicación debe establecer el campo Version en el número de versión de la versión necesaria.
Hay disponible una declaración para la estructura version-1 con el nombre MQMD1.
Juego de caracteres y codificación
Los datos de MQMD deben estar en el juego de caracteres y la codificación del gestor de colas local; los proporciona el atributo de gestor de colas CodedCharSetId y MQENC_NATIVE. Sin embargo, si la aplicación se ejecuta como un IBM MQ MQI client, la estructura debe estar en el juego de caracteres y la codificación del cliente.
Si los gestores de colas emisores y receptores utilizan conjuntos de caracteres o codificaciones diferentes, los datos de MQMD se convierten automáticamente. No es necesario que la aplicación convierta MQMD.
Utilización de distintas versiones de MQMD
- En las llamadas MQPUT y MQPUT1 , si la aplicación proporciona un MQMD de version-1 , la aplicación puede opcionalmente añadir un prefijo a los datos de mensaje con un MQMDE, estableciendo el campo
Formatde MQMD en MQFMT_MD_EXTENSION para indicar que hay un MQMDE presente. Si la aplicación no proporciona un MQMDE, el gestor de colas asume los valores predeterminados para los campos de MQMDE.Nota: Varios de los campos que existen en el MQMD version-2 pero no en el MQMD version-1 son campos de entrada/salida en las llamadas MQPUT y MQPUT1 . Sin embargo, el gestor de colas no devuelve ningún valor en los campos equivalentes de MQMDE en la salida de las llamadas MQPUT y MQPUT1 ; si la aplicación requiere estos valores de salida, debe utilizar un MQMD version-2 . - En la llamada MQGET, si la aplicación proporciona un MQMD version-1 , el gestor de colas prefija el mensaje devuelto con un MQMDE, pero sólo si uno o varios de los campos de MQMDE tienen un valor no predeterminado. El campo
Formatde MQMD tendrá el valor MQFMT_MD_EXTENSION para indicar que hay un MQMDE presente.
Cuando un mensaje se encuentra en una cola de transmisión, algunos de los campos de MQMD se establecen en valores concretos; consulte MQXQH - Encabezado de la cola de transmisión para obtener más detalles.
Contexto de mensaje
- El contexto de identidad está relacionado con la aplicación que originalmente colocó el mensaje
- El contexto de origen está relacionado con la aplicación que más recientemente ha colocado el mensaje.
Aunque la identidad y el contexto de origen normalmente tienen los significados descritos, el contenido de ambos tipos de campos de contexto en MQMD depende de las opciones MQPMO_ * _CONTEXT que se especifican cuando se coloca el mensaje. Como resultado, el contexto de identidad no está necesariamente relacionado con la aplicación que colocó originalmente el mensaje, y el contexto de origen no está necesariamente relacionado con la aplicación que colocó el mensaje más recientemente; depende del diseño de la suite de aplicaciones.
El agente de canal de mensajes (MCA) nunca altera el contexto del mensaje. Los MCA que reciben mensajes de gestores de colas remotos utilizan la opción de contexto MQPMO_SET_ALL_CONTEXT en la llamada MQPUT o MQPUT1 . Esto permite al MCA receptor conservar exactamente el contexto de mensaje que ha viajado con el mensaje del MCA emisor. Sin embargo, el resultado es que el contexto de origen no está relacionado con ninguno de los MCA que han enviado y recibido el mensaje. El contexto de origen hace referencia a una aplicación anterior que ha colocado el mensaje. Si todas las aplicaciones intermedias han pasado el contexto de mensaje, el contexto de origen hace referencia a la propia aplicación de origen.
En las descripciones, los campos de contexto se describen como si se utilizaran como se ha descrito anteriormente. Para obtener más información sobre el contexto de mensaje, consulte Contexto de mensaje.
Campos
| Nombre de campo y descripción | Nombre de constante | Valor inicial (si existe) de constante |
|---|---|---|
| StrucId (identificador de estructura) | MQMD_STRUC_ID | 'MD' |
| Versión (número de versión de estructura) | MQMD_VERSION_1 | 1 |
| Informe (opciones para mensajes de informe) | MQRO_NONE | 0 |
| MsgType (tipo de mensaje) | MQMT_DATAGRAM | 8 |
| MQMD-Campo de caducidad (duración del mensaje) | MQEI_UNLIMITED | -1 |
| MQMD - Campo de comentarios (comentarios o código de motivo) | MQFB_NONE | 0 |
| Codificación (codificación numérica de datos de mensaje) | MQENC_NATIVE | Depende del entorno |
| CodedCharSetId (identificador del conjunto de caracteres de los datos del mensaje) | MQCCSI_Q_MGR | 0 |
| Formato (nombre de formato de datos de mensaje) | MQFMT_NONE | Espacios en blanco |
| Prioridad (prioridad de mensaje) | MQPRI_PRIORITY_AS_Q_DEF | -1 |
| Persistence (persistencia de mensaje) | MQPER_PERSISTENCE_AS_Q_DEF | 2 |
| MQMD-Campo MsgId (identificador de mensaje) | MQMI_NONE | Nulos |
| CorrelId (identificador de correlación) | MQCI_NONE | Nulos |
| BackoutCount (contador de restituciones) | Ninguna | 0 |
| ReplyToQ (nombre de la cola de respuesta) | Ninguna | Serie nula o espacios en blanco |
| ReplyToQMgr (nombre del gestor de colas de respuesta) | Ninguna | Serie nula o espacios en blanco |
| UserIdentifier (identificador de usuario) | Ninguna | Serie nula o espacios en blanco |
| AccountingToken (señal de contabilidad) | MQACT_NONE | Nulos |
| ApplIdentityData (datos de la aplicación relativos a la identidad) | Ninguna | Serie nula o espacios en blanco |
| PutApplType (tipo de aplicación que puso el mensaje) | MQAT_SIN_CONTEXTO | 0 |
| PutApplName (nombre de la aplicación que envió el mensaje) | Ninguna | Serie nula o espacios en blanco |
| PutDate (fecha en la que se colocó el mensaje) | Ninguna | Serie nula o espacios en blanco |
| PutTime (hora a la que se colocó el mensaje) | Ninguna | Serie nula o espacios en blanco |
| ApplOriginData (datos de la aplicación relativos al origen) | Ninguna | Serie nula o espacios en blanco |
Nota: Los campos restantes se ignoran si
Version es menor que MQMD_VERSION_2. |
||
| GroupId (identificador de grupo) | MQGI_NONE | Nulos |
| MsgSeqNumber (número de secuencia del mensaje lógico dentro del grupo) | Ninguna | 1 |
| Desplazamiento (desplazamiento de datos en el mensaje físico desde el inicio del mensaje lógico) | Ninguna | 0 |
| MQMD - Campo « MsgFlags » (indicadores de mensajes) | MQMF_NINGUNO | 0 |
| OriginalLength (longitud del mensaje original) | MQOL_INDETERMINADO | -1 |
Notas:
|
||
Declaraciones lingüísticas
Declaración C para MQMD
typedef struct tagMQMD MQMD;
struct tagMQMD {
MQCHAR4 StrucId; /* Structure identifier */
MQLONG Version; /* Structure version number */
MQLONG Report; /* Options for report messages */
MQLONG MsgType; /* Message type */
MQLONG Expiry; /* Message lifetime */
MQLONG Feedback; /* Feedback or reason code */
MQLONG Encoding; /* Numeric encoding of message data */
MQLONG CodedCharSetId; /* Character set identifier of message
data */
MQCHAR8 Format; /* Format name of message data */
MQLONG Priority; /* Message priority */
MQLONG Persistence; /* Message persistence */
MQBYTE24 MsgId; /* Message identifier */
MQBYTE24 CorrelId; /* Correlation identifier */
MQLONG BackoutCount; /* Backout counter */
MQCHAR48 ReplyToQ; /* Name of reply queue */
MQCHAR48 ReplyToQMgr; /* Name of reply queue manager */
MQCHAR12 UserIdentifier; /* User identifier */
MQBYTE32 AccountingToken; /* Accounting token */
MQCHAR32 ApplIdentityData; /* Application data relating to
identity */
MQLONG PutApplType; /* Type of application that put the
message */
MQCHAR28 PutApplName; /* Name of application that put the
message */
MQCHAR8 PutDate; /* Date when message was put */
MQCHAR8 PutTime; /* Time when message was put */
MQCHAR4 ApplOriginData; /* Application data relating to origin */
MQBYTE24 GroupId; /* Group identifier */
MQLONG MsgSeqNumber; /* Sequence number of logical message
within group */
MQLONG Offset; /* Offset of data in physical message
from start of logical message */
MQLONG MsgFlags; /* Message flags */
MQLONG OriginalLength; /* Length of original message */
};
COBOL declaración para MQMD
** MQMD structure
10 MQMD.
** Structure identifier
15 MQMD-STRUCID PIC X(4).
** Structure version number
15 MQMD-VERSION PIC S9(9) BINARY.
** Options for report messages
15 MQMD-REPORT PIC S9(9) BINARY.
** Message type
15 MQMD-MSGTYPE PIC S9(9) BINARY.
** Message lifetime
15 MQMD-EXPIRY PIC S9(9) BINARY.
** Feedback or reason code
15 MQMD-FEEDBACK PIC S9(9) BINARY.
** Numeric encoding of message data
15 MQMD-ENCODING PIC S9(9) BINARY.
** Character set identifier of message data
15 MQMD-CODEDCHARSETID PIC S9(9) BINARY.
** Format name of message data
15 MQMD-FORMAT PIC X(8).
** Message priority
15 MQMD-PRIORITY PIC S9(9) BINARY.
** Message persistence
15 MQMD-PERSISTENCE PIC S9(9) BINARY.
** Message identifier
15 MQMD-MSGID PIC X(24).
** Correlation identifier
15 MQMD-CORRELID PIC X(24).
** Backout counter
15 MQMD-BACKOUTCOUNT PIC S9(9) BINARY.
** Name of reply queue
15 MQMD-REPLYTOQ PIC X(48).
** Name of reply queue manager
15 MQMD-REPLYTOQMGR PIC X(48).
** User identifier
15 MQMD-USERIDENTIFIER PIC X(12).
** Accounting token
15 MQMD-ACCOUNTINGTOKEN PIC X(32).
** Application data relating to identity
15 MQMD-APPLIDENTITYDATA PIC X(32).
** Type of application that put the message
15 MQMD-PUTAPPLTYPE PIC S9(9) BINARY.
** Name of application that put the message
15 MQMD-PUTAPPLNAME PIC X(28).
** Date when message was put
15 MQMD-PUTDATE PIC X(8).
** Time when message was put
15 MQMD-PUTTIME PIC X(8).
** Application data relating to origin
15 MQMD-APPLORIGINDATA PIC X(4).
** Group identifier
15 MQMD-GROUPID PIC X(24).
** Sequence number of logical message within group
15 MQMD-MSGSEQNUMBER PIC S9(9) BINARY.
** Offset of data in physical message from start of logical message
15 MQMD-OFFSET PIC S9(9) BINARY.
** Message flags
15 MQMD-MSGFLAGS PIC S9(9) BINARY.
** Length of original message
15 MQMD-ORIGINALLENGTH PIC S9(9) BINARY.
PL/I declaración para MQMD
dcl
1 MQMD based,
3 StrucId char(4), /* Structure identifier */
3 Version fixed bin(31), /* Structure version number */
3 Report fixed bin(31), /* Options for report messages */
3 MsgType fixed bin(31), /* Message type */
3 Expiry fixed bin(31), /* Message lifetime */
3 Feedback fixed bin(31), /* Feedback or reason code */
3 Encoding fixed bin(31), /* Numeric encoding of message
data */
3 CodedCharSetId fixed bin(31), /* Character set identifier of
message data */
3 Format char(8), /* Format name of message data */
3 Priority fixed bin(31), /* Message priority */
3 Persistence fixed bin(31), /* Message persistence */
3 MsgId char(24), /* Message identifier */
3 CorrelId char(24), /* Correlation identifier */
3 BackoutCount fixed bin(31), /* Backout counter */
3 ReplyToQ char(48), /* Name of reply queue */
3 ReplyToQMgr char(48), /* Name of reply queue manager */
3 UserIdentifier char(12), /* User identifier */
3 AccountingToken char(32), /* Accounting token */
3 ApplIdentityData char(32), /* Application data relating to
identity */
3 PutApplType fixed bin(31), /* Type of application that put the
message */
3 PutApplName char(28), /* Name of application that put the
message */
3 PutDate char(8), /* Date when message was put */
3 PutTime char(8), /* Time when message was put */
3 ApplOriginData char(4), /* Application data relating to
origin */
3 GroupId char(24), /* Group identifier */
3 MsgSeqNumber fixed bin(31), /* Sequence number of logical
message within group */
3 Offset fixed bin(31), /* Offset of data in physical
message from start of logical
message */
3 MsgFlags fixed bin(31), /* Message flags */
3 OriginalLength fixed bin(31); /* Length of original message */
Declaración de High Level Assembler para MQMD
MQMD DSECT
MQMD_STRUCID DS CL4 Structure identifier
MQMD_VERSION DS F Structure version number
MQMD_REPORT DS F Options for report messages
MQMD_MSGTYPE DS F Message type
MQMD_EXPIRY DS F Message lifetime
MQMD_FEEDBACK DS F Feedback or reason code
MQMD_ENCODING DS F Numeric encoding of message data
MQMD_CODEDCHARSETID DS F Character set identifier of message
* data
MQMD_FORMAT DS CL8 Format name of message data
MQMD_PRIORITY DS F Message priority
MQMD_PERSISTENCE DS F Message persistence
MQMD_MSGID DS XL24 Message identifier
MQMD_CORRELID DS XL24 Correlation identifier
MQMD_BACKOUTCOUNT DS F Backout counter
MQMD_REPLYTOQ DS CL48 Name of reply queue
MQMD_REPLYTOQMGR DS CL48 Name of reply queue manager
MQMD_USERIDENTIFIER DS CL12 User identifier
MQMD_ACCOUNTINGTOKEN DS XL32 Accounting token
MQMD_APPLIDENTITYDATA DS CL32 Application data relating to identity
MQMD_PUTAPPLTYPE DS F Type of application that put the
* message
MQMD_PUTAPPLNAME DS CL28 Name of application that put the
* message
MQMD_PUTDATE DS CL8 Date when message was put
MQMD_PUTTIME DS CL8 Time when message was put
MQMD_APPLORIGINDATA DS CL4 Application data relating to origin
MQMD_GROUPID DS XL24 Group identifier
MQMD_MSGSEQNUMBER DS F Sequence number of logical message
* within group
MQMD_OFFSET DS F Offset of data in physical message
* from start of logical message
MQMD_MSGFLAGS DS F Message flags
MQMD_ORIGINALLENGTH DS F Length of original message
*
MQMD_LENGTH EQU *-MQMD
ORG MQMD
MQMD_AREA DS CL(MQMD_LENGTH)
Declaración de Visual Basic para MQMD
Type MQMD
StrucId As String*4 'Structure identifier'
Version As Long 'Structure version number'
Report As Long 'Options for report messages'
MsgType As Long 'Message type'
Expiry As Long 'Message lifetime'
Feedback As Long 'Feedback or reason code'
Encoding As Long 'Numeric encoding of message data'
CodedCharSetId As Long 'Character set identifier of message'
'data'
Format As String*8 'Format name of message data'
Priority As Long 'Message priority'
Persistence As Long 'Message persistence'
MsgId As MQBYTE24 'Message identifier'
CorrelId As MQBYTE24 'Correlation identifier'
BackoutCount As Long 'Backout counter'
ReplyToQ As String*48 'Name of reply queue'
ReplyToQMgr As String*48 'Name of reply queue manager'
UserIdentifier As String*12 'User identifier'
AccountingToken As MQBYTE32 'Accounting token'
ApplIdentityData As String*32 'Application data relating to identity'
PutApplType As Long 'Type of application that put the'
'message'
PutApplName As String*28 'Name of application that put the'
'message'
PutDate As String*8 'Date when message was put'
PutTime As String*8 'Time when message was put'
ApplOriginData As String*4 'Application data relating to origin'
GroupId As MQBYTE24 'Group identifier'
MsgSeqNumber As Long 'Sequence number of logical message'
'within group'
Offset As Long 'Offset of data in physical message'
'from start of logical message'
MsgFlags As Long 'Message flags'
OriginalLength As Long 'Length of original message'
End Type