(PECL stomp >= 0.1.0)
Stomp::ack -- stomp_ack — Acknowledges consumption of a message
Object oriented style (method):
Procedural style:
Acknowledges consumption of a message from a subscription using client acknowledgment.
Doar stilul procedural: Identificatorul legăturii stomp întors de stomp_connect().
The message/messageId to be acknowledged.
Un tablou asociativ conținând antetele suplimentare (de exemplu: receipt).
Întoarce valoarea TRUE în cazul succesului sau FALSE în cazul eșecului.
Notă:
Poate fi specificat un antet al tranzacției, indicând faptul că confirmarea mesajului trebuie să fie parte componentă a tranzacției cu nume.
Stomp este în mod inerent asincron. O comunicare sincronă poate fi implementată adăugând un antet cu confirmare. Aceasta va face ca metodele să nu întoarcă nimic până când serverul confirmă primirea mesajului sau până când se atinge limita maximă de timp pentru citire.
Example #1 Object oriented style
<?php
$queue = '/queue/foo';
$msg = 'bar';
/* connection */
try {
$stomp = new Stomp('tcp://localhost:61613');
} catch(StompException $e) {
die('Connection failed: ' . $e->getMessage());
}
/* send a message to the queue 'foo' */
$stomp->send($queue, $msg);
/* subscribe to messages from the queue 'foo' */
$stomp->subscribe($queue);
/* read a frame */
$frame = $stomp->readFrame();
if ($frame->body === $msg) {
/* acknowledge that the frame was received */
$stomp->ack($frame);
}
/* remove the subscription */
$stomp->unsubscribe($queue);
/* close connection */
unset($stomp);
?>
Example #2 Procedural style
<?php
$queue = '/queue/foo';
$msg = 'bar';
/* connection */
$link = stomp_connect('ssl://localhost:61612');
/* check connection */
if (!$link) {
die('Connection failed: ' . stomp_connect_error());
}
/* begin a transaction */
stomp_begin($link, 't1');
/* send a message to the queue 'foo' */
stomp_send($link, $queue, $msg, array('transaction' => 't1'));
/* commit a transaction */
stomp_commit($link, 't1');
/* subscribe to messages from the queue 'foo' */
stomp_subscribe($link, $queue);
/* read a frame */
$frame = stomp_read_frame($link);
if ($frame['body'] === $msg) {
/* acknowledge that the frame was received */
stomp_ack($link, $frame['headers']['message-id']);
}
/* remove the subscription */
stomp_unsubscribe($link, $queue);
/* close connection */
stomp_close($link);
?>