Stomp::ack

stomp_ack

(PECL stomp >= 0.1.0)

Stomp::ack -- stomp_ackAcknowledges consumption of a message

说明

面向对象风格 (method):

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

过程化风格:

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

Acknowledges consumption of a message from a subscription using client acknowledgment.

参数

link

仅对过程化样式:由 stomp_connect() 返回的 stomp 连接标识符。

msg

The message/messageId to be acknowledged.

headers

关联数组包含附加的头信息(例如: receipt)。

返回值

成功时返回 true, 或者在失败时返回 false

范例

Example #1 面向对象风格

<?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 过程化风格

<?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);

?>

注释

Note:

A transaction header may be specified, indicating that the message acknowledgment should be part of the named transaction.

Tip

Stomp is inherently asynchronous. Synchronous communication can be implemented adding a receipt header. This will cause methods to not return anything until the server has acknowledged receipt of the message or until read timeout was reached.

User Contributed Notes

There are no user contributed notes for this page.