(PECL stomp >= 0.1.0)
Stomp::ack -- stomp_ack β ΠΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π°Π΅Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ
ΠΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΡΠΈΠ»Ρ (ΠΌΠ΅ΡΠΎΠ΄):
ΠΡΠΎΡΠ΅Π΄ΡΡΠ½ΡΠΉ ΡΡΠΈΠ»Ρ:
ΠΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π°Π΅Ρ ΡΠ°ΠΊΡ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΈΠ· ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°.
linkmsgheaders
Π€ΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ true, Π΅ΡΠ»ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΠ»Π°ΡΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ, ΠΈΠ»ΠΈ false, Π΅ΡΠ»ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΎΡΠΈΠ±ΠΊΠ°.
ΠΡΠΈΠΌΠ΅Ρ #1 ΠΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΡΠΈΠ»Ρ
<?php
$queue = '/queue/foo';
$msg = 'bar';
/* ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ */
try {
$stomp = new Stomp('tcp://localhost:61613');
} catch(StompException $e) {
die('ΠΡΠΈΠ±ΠΊΠ° ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ: ' . $e->getMessage());
}
/* ΠΎΡΠΏΡΠ°Π²ΠΊΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ 'foo' */
$stomp->send($queue, $msg);
/* ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠ° Π½Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΈΠ· ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ 'foo' */
$stomp->subscribe($queue);
/* ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΠΉΠΌΠ° */
$frame = $stomp->readFrame();
if ($frame->body === $msg) {
/* ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΡΠ΅ΠΉΠΌΠ° */
$stomp->ack($frame);
}
/* ΠΎΡΠΌΠ΅Π½Π° ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠΈ ΠΊ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ */
$stomp->unsubscribe($queue);
/* Π·Π°ΠΊΡΡΡΠΈΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ */
unset($stomp);
?>ΠΡΠΈΠΌΠ΅Ρ #2 ΠΡΠΎΡΠ΅Π΄ΡΡΠ½ΡΠΉ ΡΡΠΈΠ»Ρ
<?php
$queue = '/queue/foo';
$msg = 'bar';
/* ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ */
$link = stomp_connect('ssl://localhost:61612');
/* ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ */
if (!$link) {
die('ΠΡΠΈΠ±ΠΊΠ° ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ: ' . stomp_connect_error());
}
/* Π½Π°ΡΠ°Π»ΠΎ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ */
stomp_begin($link, 't1');
/* ΠΎΡΠΏΡΠ°Π²ΠΊΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ 'foo' */
stomp_send($link, $queue, $msg, array('transaction' => 't1'));
/* ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ */
stomp_commit($link, 't1');
/* ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠ° Π½Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΈΠ· ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ 'foo' */
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);
?>ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΊΠ°Π·Π°Π½ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ, ΠΎΠ·Π½Π°ΡΠ°ΡΡΠΈΠΉ ΡΡΠΎ ΠΏΡΠΈΡΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ²Π»ΡΡΡΡΡ ΡΠ°ΡΡΡΡ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ.
Stomp Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π΅Π½ ΠΏΠΎ ΡΠ²ΠΎΠ΅ΠΉ ΡΡΡΠΈ. Π‘ΠΈΠ½Ρ ΡΠΎΠ½Π½Π°Ρ ΡΠ²ΡΠ·Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ receipt-Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°. ΠΡΠΎ Π·Π°ΡΡΠ°Π²ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄Ρ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ, ΠΏΠΎΠΊΠ° ΡΠ΅ΡΠ²Π΅Ρ Π½Π΅ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΡ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΡΠ΅Π²ΡΡΠ΅Π½ΠΎ Π²ΡΠ΅ΠΌΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ.