Stomp::ack

stomp_ack

(PECL stomp >= 0.1.0)

Stomp::ack -- stomp_ackConfirmar la recepción y el consumo de un mensaje

Descripción

Estilo orientado a objetos (método):

public Stomp::ack(mixed $msg, array $headers = ?): bool

Estilo por procedimientos:

stomp_ack(resource $link, mixed $msg, array $headers = ?): bool

Confirmar el consumo de un mensaje desde una suscripción enviando el cliente una trama ACK de confirmación.

Parámetros

link

Sólo estilo por procediminetos: El identificador de enlace Stomp devuelto por stomp_connect().

msg

El mensaje/Id del mensaje a ser confirmado.

headers

Array asociativo conteniendo los headers adicionales (ejemplo: receipt).

Valores devueltos

Devuelve true en caso de éxito o false en caso de error.

Ejemplos

Ejemplo #1 Estilo orientado a objetos

<?php

$queue
= '/queue/foo';
$msg = 'bar';

/* conexión */
try {
$stomp = new Stomp('tcp://localhost:61613');
} catch(
StompException $e) {
die(
'Connection failed: ' . $e->getMessage());
}

/* enviar un mensaje a la cola 'foo' */
$stomp->send($queue, $msg);

/* suscribirse a mensajes de la cola 'foo' */
$stomp->subscribe($queue);

/* leer una trama */
$frame = $stomp->readFrame();

if (
$frame->body === $msg) {
/* confirmar que la trama fue recibida */
$stomp->ack($frame);
}

/* eliminar la suscripción */
$stomp->unsubscribe($queue);

/* cerrar la conexión */
unset($stomp);

?>

Ejemplo #2 Estilo por procedimientos

<?php

$queue
= '/queue/foo';
$msg = 'bar';

/* conexión */
$link = stomp_connect('ssl://localhost:61612');

/* comprobar la conexión */
if (!$link) {
die(
'Connection failed: ' . stomp_connect_error());
}

/* iniciar una transacción */
stomp_begin($link, 't1');

/* enviar un mensaje a la cola 'foo' */
stomp_send($link, $queue, $msg, array('transaction' => 't1'));

/* validar una transacción */
stomp_commit($link, 't1');

/* suscribirse a mensajes de la cola 'foo' */
stomp_subscribe($link, $queue);

/* leer una trama */
$frame = stomp_read_frame($link);

if (
$frame['body'] === $msg) {
/* confirmar que la trama fue recibida */
stomp_ack($link, $frame['headers']['message-id']);
}

/* eliminar la suscripción */
stomp_unsubscribe($link, $queue);

/* cerrar la conexión */
stomp_close($link);

?>

Notas

Nota:

Un header de transacción puede ser especificado, indicando que el mensaje de Acknowledgment debería formar parte del nombre de la transacción.

Sugerencia

Stomp es inherentemente asíncrono. Comunicación sincrónica puede ser implementada agregando un header receipt. Esto ocasionará métodos para no devolver nada hasta que el servidor haya recibido un Acknowledgment del mensaje o hasta que el tiempo de espera para lectura se agote.

add a note add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top