Correlación de campos de cabecera de JMS en send () o publish ()

Estas notas están relacionadas con la correlación de campos JMS en send () o publish ().

JMSDestination con MQRFH2
Esto se almacena como una serie que serializa las características salientes del objeto de destino para que un JMS receptor pueda reconstituir un objeto de destino equivalente. El campo MQRFH2 se codifica como URI (consulte Identificadores uniformes de recursos (URI) para obtener detalles de la notación de URI).
JMSReplyTo con MQMD.ReplyToQ, ReplyToQMgr, MQRFH2
El nombre de cola se copia en el campo MQMD.ReplyToQ, y el nombre del gestor de colas se copia en los campos ReplyToQMgr. La información de la extensión de destino se copia en el campo MQRFH2 (otros detalles útiles se mantienen en el objeto de destino). El campo MQRFH2 se codifica como un URI (consulte Identificadores uniformes de recursos (URI) para obtener detalles de la notación de URI).
JMSDeliveryMode con MQMD.Persistence
MessageProducer o el método send() o publish() establecen el valor JMSDeliveryMode, a menos que lo altere temporalmente el objeto de destino. El valor JMSDeliveryMode se correlaciona con el campo MQMD.Persistence tal como se indica a continuación:
  • El valor de JMS PERSISTENT es equivalente a MQPER_PERSISTENT
  • El valor de JMS NON_PERSISTENT es equivalente a MQPER_NOT_PERSISTENT
Si la propiedad de persistencia de MQQueue no se establece en WMQConstants.WMQ_PER_QDEF, el valor de la modalidad de entrega también se codifica en MQRFH2.
JMSExpiration con MQMD.Expiry, MQRFH2
JMSExpiration almacena el tiempo de caducidad (la suma de la hora actual y el tiempo de vida), mientras que MQMD almacena el tiempo de vida. Además, JMSExpiration está en milisegundos, pero MQMD.Expiry es la décima parte de un segundo.
  • Si el método send() establece un tiempo de vida ilimitado, MQMD.Expiry se establece en MQEI_UNLIMITED y no se codifica ninguna JMSExpiration en MQRFH2.
  • Si el método send() establece un tiempo de vida inferior a 214748364.7 segundos (7 años, aproximadamente), el tiempo de vida se almacena en MQMD.Expiry y la hora de caducidad (en milisegundos), se codifica como un valor i8 en MQRFH2.
  • Si el método send() establece un tiempo de vida superior a 214748364.7 segundos, MQMD.Expiry se establece en MQEI_UNLIMITED. La hora de caducidad real en milisegundos se codifica como un valor i8 en MQRFH2.
JMSPriority con MQMD.Priority
Correlaciona directamente el valor JMSPriority (0-9) con el valor de prioridad MQMD (0-9). Si se establece JMSPriority en un valor que no sea el valor predeterminado, el nivel de prioridad también se codifica en MQRFH2.
JMSMessageID de MQMD.MessageID
Todos los mensajes enviados desde JMS tienen identificadores de mensaje exclusivos asignados por IBM® MQ. El valor asignado se devuelve en el campo MQMD.MessageId después de la llamada de MQPUT y se vuelve a pasar a la aplicación en el campo JMSMessageID. El messageId de IBM MQ es un valor binario de 24 bytes, mientras que el JMSMessageID es una cadena. JMSMessageID consta del valor messageId binario convertido en una secuencia de 48 caracteres hexadecimales con los caracteres ID: como prefijo. JMS proporciona una sugerencia que se puede establecer para inhabilitar la producción de identificadores de mensajes. Se pasa por alto esta sugerencia y se asigna un identificador exclusivo en todos los casos. Se sobrescribe cualquier valor especificado en el campo JMSMessageID antes de realizar una operación send().
Si necesita especificar el MQMD.MessageID, puede hacerlo con una de las IBM MQ JMS extensiones descritas en Lectura y escritura del descriptor de mensaje desde una aplicación IBM MQ classes for JMS.
JMSTimestamp a MQRFH2
Durante un envío, el campo JMSTimestamp se establece de acuerdo con el reloj de la JVM. Este valor se establece en MQRFH2. Todos los valores que se establecen en el campo JMSTimestamp antes de realizar un envío (send()) se sobrescriben. Consulte también las propiedades JMS_IBM_PutDate y JMS_IBM_PutTime.
JMSType a MQRFH2
Esta serie se establece en el campo MQRFH2 mcd.Type. Si se encuentra en formato URI, también puede afectar a los campos mcd.Set y mcd.Fmt.
JMSCorrelationID a MQMD.CorrelId, MQRFH2
JMSCorrelationID puede mantener uno de los siguientes:
Un ID de mensaje específico del proveedor
Éste es el identificador de un mensaje enviado o recibido previamente, por lo que debe ser una serie de menos de 48 dígitos hexadecimales en minúscula con el prefijo ID:: el prefijo se elimina, los caracteres restantes se convierten en binarios y después se establecen en el campo MQMD.CorrelId.
Un valor byte[] nativo del proveedor
El valor se copia en el campo MQMD.CorrelId y se rellena con valores nulos o se trunca en 24 bytes si es necesario. En MQRFH2 no se codifica ningún valor CorrelId.
Una serie específica de la aplicación
El valor se copia en MQRFH2. Los primeros 24 bytes de la serie, en formato UTF8, se escriben en MQMD.CorrelID.