SAMMessage::header
Las propiedades en la cabecera del mensaje.
&reftitle.description;
objectSAMMessage->header
La propiedad header es un contenedor para propiedades del sistema o
usuario cuyo espacio es asociado con el mensaje.
Las propiedades pueden ser asignadas por el emisor del mensaje para controlar la forma en la que
los sistemas de mensajería tratan el mensaje o pueden ser asignadas por el propio sistema de
mensajería para comunicarle al receptor información extra sobre el mensaje o
sobre el modo en que éste ha sido tratado.
Algunas propiedades son interpretadas por SAM si las constantes se han
definido para ello. Sin embargo, la mayoría de las propiedades son ignoradas por la
implementación SAM y simplemente pasan a través de los sistemas de mensajería
permitiendo a la aplicación utilizar nombres de propiedades específicos
o definir sus propias propiedades de "usuario".
Las propiedades SAM definidas son las siguientes:
Nombre de propiedad
Valores posibles
SAM_MESSAGEID
Cuando se recibe un mensaje, este campo contiene el
identificador unívoco del mensaje tal y como ha sido asignado en el
servidor de mensajería subyacente. Cuando se envía un mensaje este campo es ignorado.
SAM_REPLY_TO
Un string con la identificación de la cola en la cual deben ser publicadas
las respuestas a ese mensaje.
SAM_TYPE
Una indicación del tipo de mensaje a enviar. El valor puede ser
SAM_TEXT lo que indica que el contenido del
cuerpo del mensaje es un string de texto, o SAM_BYTES
que indica que los contenidos del cuerpo del mensaje son de un formato específico definido
por la aplicación.
La forma en la que esta propiedad se utiliza, puede depender del servidor de mensajería
subyacente. Por ejemplo un servidor de mensajería que soporta la
especificación JMS (Java Message Service) puede
interpretar este valor y enviar mensajes del tipo "jms_text"
y "jms_bytes". Adicionalmente, si la
propiedad SAM_TYPE se define con el valor SAM_TEXT
los datos proporcionados por el cuerpo del mensaje se espera que sea un string codificado en
UTF8.
Cuando se configuran los valores de las propiedades es útil a menudo dar una indicación del
formato en el que la propiedad debe ser distribuida al sistema de
mensajería. Por defecto, los valores de la propiedad se distribuyen como texto y la
siguiente sintaxis simple puede utilizarse para configurar un valor:
Configurar una propiedad de formato de texto utilizando la sintaxis por defecto
header->myPropertyName = 'textData';
?>
]]>
Si se desea pasar información de tipo, se podría utilizar una sintaxis altenativa
donde el valor y la declaración del tipo se pasan en un array
asociativo:
Establecer una propiedad de formato de texto con una declaración de tipo
header->myPropertyName = array('textData', SAM_STRING);
?>
]]>
Si se pasa una declaración de tipo, el tipo de la entrada debe ser una de las constandes definidas
por SAM según se recogen en la siguiente tabla:
Constante
Descripción del tipo
SAM_BOOLEAN
Cualquier valor pasado será interpretado como un valor lógico, verdadero o falso.
Si el valor no puede ser interpretado como un valor booleano PHP, el valor
que se pasa al sistema de mensajería es indefinido.
SAM_BYTE
Un valor entero con signo de 8-bits. SAM intentará convertir el
valor de la propiedad especificada en un valor de un byte para pasarlo al
sistema de mensajería. Si se pasa un valor de tipo string, se intentará
interpretar el string como un valor numérico. Si el valor
numérico no puede ser expresado en un valor binario con signo de 8 bits los datos pueden
perderse en la conversión.
SAM_DOUBLE
Un valor long de punto flotante. SAM intentará convertir el
valor de la propiedad especificada en un valor de punto flotante con 15 dígitos
de precisión. Si se pasa un valor de tipo string, se intentará
interpretar el string como un valor numérico. Si el valor pasado no puede
expresarse en un valor de punto flotante de 15 dígitos, los datos pueden perderse en
la conversión.
SAM_FLOAT
Un valor short de punto flotante. SAM intentará convertir el
valor de la propiedad especificada en un valor de punto flotante con 7 dígitos de
precisión. Si se pasa un valor de tipo string, se intentará
interpretar el string como un valor numérico. Si el valor pasado no puede
ser expresado como un valor de 7 dígitos de punto flotante, los datos pueden perderse en
la conversión.
SAM_INT
Un valor entero con signo de 32-bits. SAM intentará convertir el
valor de la propiedad especificado, en un valor de 32 bits para pasarlo al sistema de
mensajería. Si se pasa un valor de tipo string, se intentará
interpretar el string como un valor numérico. Si el valor numérico no puede
expresarse en un valor binario con signo de 32 bits, los datos pueden perderse en la
conversión.
SAM_LONG
Un valor entero con signo de 64 bits. SAM intentará convertir
el valor especificado en la propiedad en un valor de 64 bits para pasarlo al sistema de
mensajería. Si se pasa un valor de tipo string, se intentará
interpretar el string como un valor numérico. Si el valor numérico no puede
expresarse como un valor binario con signo de 64 bits, los datos se pueden perder en la
conversión.
SAM_STRING
SAM interpretará el valor especificado como un string y lo pasará
de ese modo al sistema de mensajería.
&reftitle.examples;
Configuración de propiedades como el emisor de un mensaje
header->SAM_REPLY_TO = 'queue://test/replyQueue';
// definición de propiedades arbitrarias...
//
// una propiedad de tipo string por defecto
$msg->header->myStringProp1 = 'una propiedad de tipo string';
// una propiedad de tipo string con una declaración de tipo
$msg->header->myStringProp2 = array('otra propiedad de tipo string', SAM_STRING);
// una propiedad de tipo booleano
$msg->header->myBoolProp = array(FALSE, SAM_BOOL);
// propiedades de formato numérico
$msg->header->myIntProp = array(32768, SAM_INT);
$msg->header->myLongProp = array(9876543, SAM_LONG);
$msg->header->myByteProp1 = array(123, SAM_BYTE);
$msg->header->myByteProp2 = array('12', SAM_BYTE);
$msg->header->myFloatProp = array(3.141592, SAM_FLOAT);
$msg->header->myDoubleProp = array(3.14159265358979, SAM_DOUBLE);
?>
]]>
Recuperación de valores desde un mensaje
header->MyIntProp;
// acceso a propiedades específicas del servidor de mensajería
$encoding = $msg->header->JMS_IBM_Msgtype;
?>
]]>
&reftitle.seealso;