Intercambio de mensajes entre los programas JMS a través de la integración de servicios y IBM MQ
Normalmente, no tiene que saber la conversación entre los formatos de mensaje para intercambiar mensajes JMS entre la integración de servicios y IBM MQ, porque la integración de servicios realiza la conversación apropiada automáticamente, incluida la codificación de caracteres y numérica. Sin embargo, es posible que tenga que obtener más información sobre la conversión de mensajes si las aplicaciones JMS no se comportan como se espera, o si la configuración de la integración de servicios incluye programas o mediaciones JMS que procesan mensajes procedentes o con destino de programas IBM MQ no JMS.
Si las aplicaciones de la integración de servicios intercambian objetos MapMessage con aplicaciones IBM MQ, es posible que tenga que especificar un formato de codificación de mensajes MAP no predeterminado.
Propiedades de los mensajes IBM MQ: el MQMD y la MQRFH2
Los mensajes WebSphere MQ contienen propiedades de mensaje en el descriptor de mensaje (MQMD) y en las reglas y cabecera 2 de formato (MQRFH2). El mensaje
IBM MQ siempre incluye un MQMD, pero la MQRFH2 es opcional porque algunas aplicaciones WebSphere MQ no pueden procesar mensajes que contienen una MQRFH2. Para simplificar la interoperación, puede
configurar la integración de servicios para omitir la MQRFH2 de los mensajes para las aplicaciones
que no pueden procesar la MQRFH2. Cuando la integración de servicios omite la MQRFH2, descarta los campos y las propiedades de la cabecera de integración de servicios correspondiente.
Nota: Una pequeña cantidad de información de MQRFH2 también se almacena en los campos MQMD. Sin embargo, estos campos MQMD no son equivalentes exactos, tienden a ser menos específicos y no se puede confiar en ellos para proporcionar un sustituto adecuado para la información de MQRFH2.
Por tanto, si la aplicación receptora puede aceptar una cabecera MQRFH2, siempre se debe proporcionar una.
De forma parecida, la integración de servicios podría recibir mensajes de aplicaciones IBM MQ que generan mensajes sin ninguna MQRFH2. Cuando la integración de servicios recibe un mensaje sin ninguna MQRFH2, crea una cabecera de integración de servicios de "mejor opción", obteniendo toda la información que se pueda de la MQMD y utilizando los valores predeterminados para los otros campos.
Si desea información detallada sobre el contenido del descriptor de mensaje y de las cabeceras de mensaje, consulte la publicación IBM MQ Application Programming Reference. Si desea detalles del soporte para JMS de IBM MQ, incluidos los detalles de cómo IBM MQ almacena los campos de propiedades y cabecera de mensaje JMS en el MQMD y en la MQRFH2, consulte IBM MQ.
Propiedades de los mensajes IBM MQ: campos de cabecera JMS
La tabla siguiente muestra cómo la integración de servicios correlaciona los campos de cabecera JMS hacia y desde los campos MQMD y MQRFH2 al convertir mensajes hacia y desde el formato IBM MQ.
La tabla muestra el campo
MQRFH2 como
campo.carpeta, donde carpeta es el nombre de la carpeta MQRFH2
que contiene el campo, y campo es el nombre del campo que está dentro de la carpeta
MQRFH2.
Para varios campos de cabecera JMS, hay a la vez un campo MQMD y un campo MQRFH2. Cuando la integración de servicio está convirtiendo mensajes al formato
IBM MQ, establece los campos MQMD y MQRFH2. Cuando la integración de servicios está convirtiendo mensajes desde el formato IBM MQ, establece el campo de cabecera JMS desde el campo MQRFH2 si está disponible y, en caso contrario, desde el campo MQMD.
Tabla 1. Campos de cabecera de JMS, MQMD y MQRFH2. La primera columna de esta tabla muestra los campos de cabecera JMS y la segunda columna muestra los campos MQMD que se relacionan con los campos de cabecera JMS de la primera columna. La tercera columna muestra los campos MQRFH2 que se relacionan con los campos de cabecera JMS de la primera columna. La cuarta columna proporciona enlaces, según corresponda, a las notas a pie de página
que aparecen debajo de la tabla. Campo de cabecera JMS |
Campo MQMD |
Campo MQRFH2 |
Notas |
JMSCorrelationID |
CorrelId |
jms.Cid |
Consulte la nota 1. |
JMSDeliveryMode |
Persistence |
jms.Dlv |
Consulte la nota 15. |
JMSDestination |
|
jms.Dst |
Consulte la nota 16. |
JMSExpiration |
Expiry |
jms.Exp |
|
JMSMessageID |
MsgId |
|
|
JMSPriority |
Priority |
|
Consulte la nota 2. |
JMSRedelivered |
BackoutCount |
|
Consulte la nota 3. |
JMSReplyTo |
ReplyToQ y ReplyToQMgr |
jms.Rto |
Consulte la nota 16. |
JMSTimestamp |
PutDate y PutTime |
jms.Tms |
|
JMSType |
|
mcd.Type |
|
Nota 1: El campo MQMD CorrelId puede contener un ID de correlación IBM MQ estándar de 48 dígitos hexadecimales (24 bytes). El JMSCorrelationID puede ser un valor byte[], un valor de serie que contiene caracteres hexadecimales y tiene el prefijo "ID:", o bien un valor de serie arbitrario que no empieza por "ID:". Los dos primeros representan un ID de correlación IBM MQ estándar y se correlacionan directamente a o desde el campo MQMD CorrelId (truncados o rellenados con ceros según corresponda); no utilizan el campo MQRFH2 jms.Cid.
El tercer valor (serie arbitraria) utiliza el campo MQRFH2 jms.Cid; los primeros 24 bytes de la serie, en formato UTF-8, se escriben en el campo MQMD CorrelID.
Nota 2: IBM MQ almacena el valor JMSPriority en el campo MQRFH2 jms.Pri pero no utiliza ningún valor que ya está en dicho campo. La integración de servicios no comprueba ni establece el campo MQRFH2 jms.Pri.
Nota 3: La integración de servicios establece el indicador JMSRedelivered para un mensaje que recibe de IBM MQ en función del campo BackoutCount del MQMD; un valor BackoutCount distinto de cero indica que una operación de recepción anterior del mensaje se ha retrotraído.
Propiedades de los mensajes IBM MQ: propiedades definidas por JMS
La tabla siguiente muestra cómo la integración de servicios correlaciona las propiedades definidas por JMS hacia y desde los campos MQMD y MQRFH2 al convertir mensajes hacia y desde el formato IBM MQ.
La tabla muestra el campo
MQRFH2 como
campo.carpeta, donde carpeta es el nombre de la carpeta MQRFH2
que contiene el campo, y campo es el nombre del campo que está dentro de la carpeta
MQRFH2.
Para varias propiedades definidas por JMS, hay a la vez un campo MQMD y un campo MQRFH2. Cuando la integración de servicio está convirtiendo mensajes al formato
IBM MQ, establece los campos MQMD y MQRFH2. Cuando la integración de servicios está convirtiendo mensajes desde el formato IBM MQ, establece la propiedad definida por JMS desde el campo MQRFH2 si está disponible y, en caso contrario, desde el campo MQMD.
Tabla 2. Propiedades JMS con los campos MQMD y MQRFH2. La primera columna de esta tabla muestra las propiedades definidas por JMS y la segunda columna muestra los campos MQMD que se relacionan con
las propiedades definidas por JMS de la primera columna. La tercera columna muestra los campos MQRFH2 que se relacionan con las propiedades
definidas por JMS de la primera columna. La cuarta columna proporciona enlaces, según corresponda, a las notas a pie de página
que aparecen debajo de la tabla. Propiedad definida por JMS |
Campo MQMD |
Campo MQRFH2 |
Notas |
JMSXAppID |
PutApplName |
|
|
JMSXDeliveryCount |
BackoutCount |
|
|
JMSXGroupID |
GroupId |
jms.Gid |
Consulte las notas 4 y 5. |
JMSXGroupSeq |
MsgSeqNumber |
jms.Seq |
|
JMSXUserID |
UserIdentifier |
|
|
Nota 4: El campo MQMD GroupId puede contener un GroupId
de IBM MQ estándar de 48 dígitos hexadecimales (24
bytes). El JMSXGroupID es un valor de serie que contiene caracteres hexadecimales y tiene el prefijo "ID:" o bien es un valor de serie arbitraria que no empieza por "ID:". El primero de estos valores representa un GroupId de IBM MQ estándar se correlaciona directamente a o desde el campo MQMD GroupId (truncado o rellenado con ceros según corresponda). El segundo valor (serie arbitraria) utiliza el campo MQRFH2 jms.Gid; los primeros 24 bytes de la serie, en formato UTF-8, se escriben en el campo MQMD GroupId.
Nota 5: Cuando la integración de servicios convierte mensajes al formato
IBM MQ, si se ha establecido
JMSXGroupID la integración de servicios también estable el distintivo
MQMF_MSG_IN_GROUP en el campo
MsgFlags del MQMD. Tenga en cuenta que al enviar mensajes de grupos, la aplicación JMS de envío debe asegurarse de que el distintivo
MQMF_LAST_MSG_IN_GROUP está establecido según sea necesario (consulte
Propiedades de los mensajes IBM MQ: propiedades específicas del proveedor de JMS).
Propiedades de los mensajes IBM MQ: propiedades específicas del proveedor de JMS
La tabla siguiente muestra cómo la integración de servicios correlaciona las propiedades específicas del proveedor de JMS hacia y desde los campos MQMD y MQRFH2 al convertir mensajes hacia y desde del formato WebSphere MQ. Normalmente estas propiedades se utilizan para satisfacer requisitos especiales de la aplicación receptora, por lo que debe consultar al desarrollador o administrador de la aplicación receptora para obtener detalles acerca de los valores necesarios de las propiedades.
Tabla 3. Propiedades específicas del proveedor de JMS con los campos MQMD y MQRFH2. La primera columna de esta tabla muestra las propiedades específicas del proveedor de JMS y la segunda columna muestra los campos MQMD que se
relacionan con las propiedades específicas del proveedor de JMS de la primera columna. La tercera columna muestra los campos MQRFH2 que se relacionan
con las propiedades específicas de proveedor de JMS de la primera columna. La cuarta columna proporciona enlaces, según corresponda, a las notas a pie de página
que aparecen debajo de la tabla. Propiedad específica del proveedor de JMS |
Campo MQMD |
Campo MQRFH2 |
Notas |
JMS_IBM_ArmCorrelator |
|
mqext.Arm |
Consulte la nota 6. |
JMS_IBM_Character_Set |
CodedCharacterSetId |
CodedCharacterSetId |
Consulte la nota 7. |
JMS_IBM_Encoding |
Encoding |
Encoding |
Consulte la nota 7. |
JMS_IBM_Feedback |
Feedback |
|
|
JMS_IBM_Format |
Format |
Format |
Consulte la nota 7. |
JMS_IBM_Last_Msg_In_Group |
MQMF_LAST_MSG_IN_GROUP |
|
Consulte la nota 8. |
JMS_IBM_MQMD_CorrelId |
CorrelId |
|
Consulte las notas 9 y 10. |
JMS_IBM_MQMD_MsgId |
MsgId |
|
Consulte las notas 9 y 11. |
JMS_IBM_MQMD_Persistence |
Persistence |
|
Consulte las notas 9, 12 y 15. |
JMS_IBM_MQMD_ReplyToQ |
ReplyToQ |
|
Consulte las notas 9, 13 y 16. |
JMS_IBM_MQMD_ReplyToQMgr |
ReplyToQMgr |
|
Consulte las notas 9, 13 y 16. |
JMS_IBM_MsgType |
MsgType |
|
|
JMS_IBM_PutDate |
PutDate |
|
|
JMS_IBM_PutTime |
PutTime |
|
|
JMS_IBM_Report_* |
Report |
|
Consulte la nota 14. |
JMS_IBM_RMCorrelator |
|
mqext.Wrm |
|
JMS_TOG_ARM_Correlator |
|
mqext.Arm |
Consulte la nota 6. |
Nota 6: Debe utilizar el nombre JMS_TOG_ARM_Correlator para el correlacionador ARM. El nombre JMS_IBM_ArmCorrelator está disponible para la compatibilidad con algunos programas JMS existentes.
Nota 7: Las propiedades
JMS_IBM_Character_Set,
JMS_IBM_Encoding y
JMS_IBM_Format contienen información acerca de la carga útil del mensaje
IBM MQ; es decir, la parte del mensaje
IBM MQ que sigue a la MQRFH2 (si hay una) o todo el mensaje
IBM MQ, excluido el MQMD, si no hay ninguna MQRFH2. Para obtener más información sobre estas propiedades y cómo utilizarlas, consulte
Correlación del cuerpo de mensajes con y desde el formato IBM MQ.
Nota 8: MQMF_LAST_MSG_IN_GROUP es uno de los distintivos del campo MsgFlags del MQMD.
Nota 9: Las propiedades
JMS_IBM_MQMD_CorrelId,
JMS_IBM_MQMD_MsgId,
JMS_IBM_MQMD_Persistence,
JMS_IBM_MQMD_ReplyToQ y
JMS_IBM_MQMD_ReplyToQMgr permiten a las aplicaciones JMS alterar temporalmente el proceso predeterminado de integración de servicios de los campos MQMD de
IBM MQ. Cuando la integración de servicios convierte mensajes al formato
IBM MQ, la integración de servicios establece el campo MQMD correspondiente para cada una de estas propiedades si, y sólo si, dicha propiedad ha sido establecida explícitamente por la aplicación (utilizando
setObjectProperty() o
setNonNullProperty()).
La integración de servicios establece cada una de estas propiedades desde el campo MQMD correspondiente cuando convierte un mensaje desde el formato IBM MQ.
Nota 10: La propiedad
JMS_IBM_MQMD_CorrelId altera temporalmente el proceso predeterminado de la propiedad
JMSCorrelationID.
Cuando la integración de servicios convierte mensajes al formato
IBM MQ, la integración de servicios establece el campo MQMD
CorrelId en el valor (
byte[]), si se ha establecido explícitamente, de la propiedad
JMS_IBM_MQMD_CorrelId, independientemente del valor (en caso de que haya alguno) de la propiedad
JMSCorrelationID.
Establecer la propiedad
JMS_IBM_MQMD_CorrelId no afecta al valor del campo MQRFH2
jms.Cid.
Cuando la integración de servicios convierte mensajes desde el formato IBM MQ, la integración de servicios establece la propiedad JMS_IBM_MQMD_CorrelId en el valor (byte[]) del campo MQMD CorrelId, independientemente del valor (en caso de que haya alguno) del campo MQRFH2 jms.Cid.
Nota 11: La propiedad
JMS_IBM_MQMD_MsgId altera temporalmente el proceso predeterminado JMS de la propiedad
JMSMessageID.
Cuando la integración de servicios convierte mensajes al formato
IBM MQ, la integración de servicios comprueba si la propiedad
JMS_IBM_MQMD_MsgId se ha establecido explícitamente. Si es así, la integración de servicios establece el campo MQMD
MsgId en este valor (byte[]) y sustituye el valor exclusivo de
JMSMessageID que JMS asigna al mensaje.
Cuando la integración de servicios convierte mensajes desde el formato IBM MQ, la integración de servicios establece la propiedad JMS_IBM_MQMD_MsgId en el valor (byte[]) del campo MQMD MsgId.
Nota 12: La propiedad
JMS_IBM_MQMD_Persistence altera temporalmente el proceso predeterminado de la propiedad
JMSDeliveryMode.
Cuando la integración de servicios convierte mensajes al formato
IBM MQ, la integración de servicios establece el campo MQMD
Persistence en el valor (entero), si se ha establecido explícitamente, de la propiedad
JMS_IBM_MQMD_Persistence, independientemente del valor (en caso de que haya alguno) de la propiedad
JMSDeliveryMode.
Establecer la propiedad
JMS_IBM_MQMD_Persistence no afecta al valor del campo MQRFH2
jms.Dlv.
Cuando la integración de servicios convierte mensajes desde el formato IBM MQ, la integración de servicios establece la propiedad JMS_IBM_MQMD_Persistence en el valor (entero) del campo MQMD Persistence, independientemente del valor (en caso de que haya alguno) del campo MQRFH2 jms.Dlv.
Nota 13: Las propiedades
JMS_IBM_MQMD_ReplyToQ y
JMS_IBM_MQMD_ReplyToQMgr alteran temporalmente el proceso predeterminado de la propiedad
JMSReplyTo.
Cuando la integración de servicios convierte mensajes al formato
IBM MQ, la integración de servicios establece el campo MQMD
ReplyToQ en el valor (serie), si se ha establecido explícitamente, de la propiedad
JMS_IBM_MQMD_ReplyToQ y el campo MQMD
ReplyToQMgr en el valor (serie), si se ha establecido explícitamente, de la propiedad
JMS_IBM_MQMD_ReplyToQMgr, independientemente del valor (en caso de que haya alguno) de la propiedad
JMSReplyTo.
Establecer la propiedad
JMS_IBM_MQMD_ReplyToQ o
JMS_IBM_MQMD_ReplyToQMgr no afecta al valor del campo MQRFH2
jms.Rto.
Cuando la integración de servicios convierte mensajes desde el formato IBM MQ, la integración de servicios establece las propiedades JMS_IBM_MQMD_ReplyToQ y JMS_IBM_MQMD_ReplyToQMgr en los valores (serie) de los campos MQMD ReplyToQ y ReplyToQMgr, independientemente del valor (en caso de que haya alguno) del campo MQRFH2 jms.Rto.