PHP 8.4.1 Released!

Stomp::readFrame

stomp_read_frame

(PECL stomp >= 0.1.0)

Stomp::readFrame -- stomp_read_frameLit le prochain message

Description

Style orienté objet (méthode) :

public Stomp::readFrame(string $class_name = "stompFrame"): stompframe

Style procédural :

stomp_read_frame(resource $link): array

Lit le prochain message. Il est possible d'instancier un objet d'une classe spécifique, et de passer les paramètres au constructeur de cette classe.

Liste de paramètres

link

Style procédural uniquement : L'identifiant stomp retourné par la fonctionstomp_connect().

class_name

Le nom de la classe à instancier. Si ce paramètre n'est pas spécifié, un objet stompFrame est retourné.

Valeurs de retour

Note:

Un en-tête de transaction peut être spécifié, indiquant que la confirmation des messages doit faire partie de la transaction.

Historique

Version Description
PECL stomp 0.4.0 Le paramètre class_name a été ajouté.

Exemples

Exemple #1 Style orienté objet

<?php

/* connexion */
try {
$stomp = new Stomp('tcp://localhost:61613');
} catch(
StompException $e) {
die(
'Connection failed: ' . $e->getMessage());
}

/* souscription aux messages de la file 'foo' */
$stomp->subscribe('/queue/foo');

/* lecture d'un message */
var_dump($stomp->readFrame());

/* fermeture de la connexion */
unset($stomp);

?>

Résultat de l'exemple ci-dessus est similaire à :

object(StompFrame)#2 (3) {
  ["command"]=>
  string(7) "MESSAGE"
  ["headers"]=>
  array(5) {
    ["message-id"]=>
    string(41) "ID:php.net-55293-1257226743606-4:2:-1:1:1"
    ["destination"]=>
    string(10) "/queue/foo"
    ["timestamp"]=>
    string(13) "1257226805828"
    ["expires"]=>
    string(1) "0"
    ["priority"]=>
    string(1) "0"
  }
  ["body"]=>
  string(3) "bar"
}

Exemple #2 Style procédural

<?php

/* connexion */
$link = stomp_connect('ssl://localhost:61612');

/* verification de la connexion */
if (!$link) {
die(
'Connection failed: ' . stomp_connect_error());
}

/* souscription aux messages de la file 'foo' */
stomp_subscribe($link, '/queue/foo');

/* lecture d'un message */
$frame = stomp_read_frame($link);

/* fermeture de la connexion */
stomp_close($link);

?>

Résultat de l'exemple ci-dessus est similaire à :

array(3) {
  ["command"]=>
  string(7) "MESSAGE"
  ["body"]=>
  string(3) "bar"
  ["headers"]=>
  array(6) {
    ["transaction"]=>
    string(2) "t1"
    ["message-id"]=>
    string(41) "ID:php.net-55293-1257226743606-4:3:-1:1:1"
    ["destination"]=>
    string(10) "/queue/foo"
    ["timestamp"]=>
    string(13) "1257227037059"
    ["expires"]=>
    string(1) "0"
    ["priority"]=>
    string(1) "0"
  }
}

add a note

User Contributed Notes 1 note

up
0
hasan dot ucak at gmail dot com
6 years ago
/* php.ini
[stomp]
stomp.default_connection_timeout_sec = 10
stomp.default_read_timeout_sec = 15

these values should not be left by default.
if queue server very busy and there is a lot message in queue ,
not respond to frame in two second.
*/

try {
$stomp = new Stomp(self::geturl, self::username, self::password,array('client-id'=> gethostname()."-".uniqid(mt_rand(), true)));

$stomp->subscribe(self::getqueue, array('selector' => sprintf(self::selector, $queue_id)));

/* read a frame */

$frame = $stomp->readFrame();
if ($frame) {
$stomp->ack($frame);
unset($stomp);
return $frame;
}
unset($stomp);
return false;
} catch (StompException $e) {
print ('Connection failed: ' . $e->getMessage());
unset($stomp);
return false;
}

/* close connection */
unset($stomp);
To Top