Stomp::ack

stomp_ack

(PECL stomp >= 0.1.0)

Stomp::ack -- stomp_ack β€” ΠŸΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ сообщСния

ОписаниС

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΡΡ‚ΠΈΠ»ΡŒ (ΠΌΠ΅Ρ‚ΠΎΠ΄):

public function Stomp::ack(mixed $msg, array $headers = ?): bool

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½Ρ‹ΠΉ ΡΡ‚ΠΈΠ»ΡŒ:

function stomp_ack(resource $link, mixed $msg, array $headers = ?): bool

ΠŸΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π΅Ρ‚ Ρ„Π°ΠΊΡ‚ получСния сообщСния ΠΈΠ· ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.

Бписок ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²

link
Волько для ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΎΠ³ΠΎ стиля: ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ соСдинСния stomp, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ ΠΈΠ· stomp_connect().
msg
Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅/ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ сообщСния, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΎ.
headers
Ассоциативный массив, содСрТащий Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ (ΠΏΡ€ΠΈΠΌΠ΅Ρ€: receipt).

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ значСния

Ѐункция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ 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-Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°. Π­Ρ‚ΠΎ заставит ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ, ΠΏΠΎΠΊΠ° сСрвСр Π½Π΅ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ сообщСния ΠΈΠ»ΠΈ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ΅Π½ΠΎ врСмя оТидания сообщСния.

οΌ‹Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π΅Ρ‰Ρ‘ Π½Π΅ добавляли примСчания для страницы