(PECL stomp >= 0.1.0)
Stomp::ack -- stomp_ack — Confirmar la recepción y el consumo de un mensaje
Estilo orientado a objetos (método):
Estilo por procedimientos:
Confirmar el consumo de un mensaje desde una suscripción enviando el cliente una trama ACK de confirmación.
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).
Ejemplo #1 Estilo orientado a objetos
<?php
$queue = '/queue/foo';
$msg = 'bar';
try {
$stomp = new Stomp('tcp://localhost:61613');
} catch(StompException $e) {
die('Connection failed: ' . $e->getMessage());
}
$stomp->send($queue, $msg);
$stomp->subscribe($queue);
$frame = $stomp->readFrame();
if ($frame->body === $msg) {
$stomp->ack($frame);
}
$stomp->unsubscribe($queue);
unset($stomp);
?>
Ejemplo #2 Estilo por procedimientos
<?php
$queue = '/queue/foo';
$msg = 'bar';
$link = stomp_connect('ssl://localhost:61612');
if (!$link) {
die('Connection failed: ' . stomp_connect_error());
}
stomp_begin($link, 't1');
stomp_send($link, $queue, $msg, array('transaction' => 't1'));
stomp_commit($link, 't1');
stomp_subscribe($link, $queue);
$frame = stomp_read_frame($link);
if ($frame['body'] === $msg) {
stomp_ack($link, $frame['headers']['message-id']);
}
stomp_unsubscribe($link, $queue);
stomp_close($link);
?>
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.
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.