SAMConnection::send

(PECL sam >= 0.1.0)

SAMConnection::send Envía un mensaje a una cola o lo publica en un asunto.

Descripción

SAMConnection::send ( string $target , SAMMessage $msg [, array $properties ] ) : string

El método "send" se utiliza para enviar un mensaje a una cola específica o publicarlo en un asunto específico. El método devuelve el identificador de correlación, que puede ser utilizado como un selector para identificar los mensajes respondidos cuando éstos sean solicitados.

Parámetros

target

Si enviamos un mensaje, esta será la identidad de la cola (queue://queuename) o si lo publicamos en un asunto, la identidad del asunto (topic://topicname) al cual el mensaje va a ser enviado.

msg

El mensaje a enviar o publicar.

properties

Un array asociativo opcional de propiedades que describen otros parámetros para controlar la operación de recepción.

Nombre de la propiedad Valores posibles
SAM_DELIVERYMODE Indica si el servidor de mensajería debe asegurar la entrega o si es aceptable que los mensajes se pierdan en caso de fallo de sistema. El valor de esta propiedad debe fijarse a SAM_PERSISTENT, para indicar que la pérdida del mensaje no es aceptable, o SAM_NON_PERSISTENT, si la pérdida del mensaje es aceptable. El comportamiento resultante del envío variará dependiendo de las funcionalidades del servidor de mensajería al que esté conectado actualmente el script PHP. Si el servidor no soporta los mensajes persistentes y SAM_PERSISTENT es especificado, la petición de envío fallará con un error indicando que la funcionalidad no está disponible.
SAM_PRIORITY Un valor numérico entre 0 y 9 que indica la prioridad de envío del mensaje deseada. Un valor de prioridad de 0 indica la menor prioridad mientras que 9 indica la mayor prioridad. Si no se especifica prioridad, se asignará un valor por defecto que dependerá del servidor de mensajería que está siendo utilizado.
SAM_CORRELID Una cadena a asignar como el identificador de correlación para este mensaje. Si no se especifica ningún valor, el servidor de mensajería puede asignar un valor automáticamente.
SAM_TIMETOLIVE La duración en milisegundos que indica cuanto tiempo el servidor de mensajería debe retener el mensaje en una cola antes de descartarlo. El valor por defecto es 0 indicando que el mensaje debe retenerse indefinidamente.
SAM_WMQ_TARGET_CLIENT Esta propiedad es válida únicamente cuando se utilice WebSphere MQ e indica si la cabecera RFH2 debe incluirse o no dentro del mensaje. Esta opción puede definirse con 'jms' o 'mq'. El valor por defecto es 'jms' que significa que se incluye una cabecera RFH2. Si se especifica el valor 'mq' entonces no se incluye RFH2 en el mensaje.

Valores devueltos

Una cadena con el identificador de correlación que puede utilizarse en una llamada de recepción, como selector para obtener todas las respuestas solicitadas o FALSE en caso de error.

Nota:

Un identificador de correlación sólo será devuelto por un envío con éxito a la cola de destinación (queue://xxxx) y en ese caso reflejará la identidad del mensaje de la cola. En caso de un envio que esté siendo utilizado para publicar datos en un asunto, el valor de retorno será TRUE puesto que ningún identificador de correlación estará disponible para ser devuelto.

Ejemplos

Ejemplo #1 Enviar un mensaje a una cola

<?php
$msg 
= new SAMMessage('Este es un mensaje simple');
$correlId $conn->send('queue://send/test'$msg);
if (!
$correlId) {
    
// El envío falló!
    
echo "Envío fallido ($conn->errno$conn->error";
}

?>

Ejemplo #2 Publicar un mensaje en un asunto

<?php
$msg 
= new SAMMessage('Este es un mensaje simple');
if (!
$conn->send('topic://test'$msg)) {
    
// El envío falló!
    
echo "Envío fallido ($conn->errno$conn->error";
}
?>

Ejemplo #3 Enviar una solicitud y recibir una respuesta

<?php
$msg 
= new SAMMessage('Este es un mensaje simple');
$msg->header->SAM_REPLY_TO 'queue://receive/test';
$correlid $conn->send('queue://send/test'$msg);

if (!
$correlid) {
    
// El envío falló!
    
echo "Envío fallido ($conn->errno$conn->error";
} else {
    
$resp $conn->receive('queue://receive/test', array(SAM_CORRELID => $correlid));
}
?>

Ver también