Stomp::ack
stomp_ack
(PECL stomp >= 0.1.0)
Stomp::ack -- stomp_ack — Acknowledges consumption of a message
Beschreibung
Objektorientierter Stil (method):
Prozeduraler Stil:
Acknowledges consumption of a message from a subscription using client acknowledgment.
Parameter-Liste
-
link
-
Nur für prozedurale Aufrufe: Die Stomp-Verbindung, die von stomp_connect() zurückgegeben wurde.
-
msg
-
The message/messageId to be acknowledged.
-
headers
-
Assoziatives Array, welches alle zusätzlichen Header beinhaltet (z.B: receipt).
Rückgabewerte
Gibt bei Erfolg true
zurück. Bei einem Fehler wird false
zurückgegeben.
Beispiele
Beispiel #1 Objektorientierter Stil
<?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);
?>
Beispiel #2 Prozeduraler Stil
<?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);
?>
Anmerkungen
Hinweis:
Ein Transaktionsheader kann angegeben werden. Dies zeigt an, dass die Bestätigung der Nachricht ein Bestandteil der benanten Transaktion sein soll.
Eine grundlegende Eigenschaft von Stomp ist die Synchronität. Synchrone Kommunikation kann durch das Hinzufügen eines Empfangsheaders (receipt-Header) implementiert werden. Dies wird dazu führen, dass Methoden nicht zurückkehren, bis der Server den Empfang der Nachricht bestätigt hat oder der Lese-Timeout übershcritten wurde.