(PECL stomp >= 0.1.0)
Stomp::ack -- stomp_ack — Acknowledges consumption of a message
Styl obiektowy (method):
Styl proceduralny:
Acknowledges consumption of a message from a subscription using client acknowledgment.
link
Tylko styl proceduralny: identyfikator połączenia stomp zwracany przez stomp_connect().
msg
The message/messageId to be acknowledged.
headers
Tablica wielowymiarowa zawierająca dodatkowe nagłówki (na przykład: receipt).
Zwraca TRUE
w przypadku powodzenia, FALSE
w
przypadku błędu.
Informacja:
Można określić nagłówek transakcji, wskazując, że potwierdzenie odbioru powinno być częścią nazwanej transakcji.
Stomp jest z natury asynchroniczny. Komunikacja synchroniczna może być uzyskana przez dodanie nagłówka receipt (otrzymanie). Spowoduje to, że metody nie będą niczego zwracać, dopóki serwer nie potwierdzi otrzymania wiadomości lub dopóki nie zostanie osiągnięty limit czasowy odczytu.
Przykład #1 Styl obiektowy
<?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);
?>
Przykład #2 Styl proceduralny
<?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);
?>