Как прочитать текст сообщения, отправленного stomp

Я пытаюсь создать JSON, который я хочу отправить от одного производителя другому, который позже должен разбить его и работать с ним.
Поэтому я использую activemq и stomp, так как я программирую на php.
У меня есть следующая программа для моего продюсера:

<?php

namespace Stomp;

require __DIR__ . '/../vendor/autoload.php';

use Stomp\Client;
use Stomp\StatefulStomp;
use Stomp\Network\Connection;
use Stomp\Transport\Message;

header('Content-Type: application/json');
//namespace buttoncall\Model;$provider=''; //colocar provider$data1= array(
'provider' => $provider
);
(...)

$data=array($data1,$data2, $data3, $data4);
$json = json_encode($data, true);

$destination  = '/queue/nexmo';
$messages = 1;
$size = 1024;

$DATA = "calls";
//$body = $data;
$body = $json;
for($i=0; $i< $size; $i++) {
$body .= $DATA[ $i % 26];
}

try {
$connection = new Connection('tcp://192.168.64.2:61613');
$con1 = new StatefulStomp(new Client($connection));$con1->send($destination, new Message($body));

echo "Message sent $body \n" ;

$con1->send($destination, new Message("SHUTDOWN"));

} catch(StompException $e) {
echo $e->getMessage();

}
}
}

И тогда следующий потребитель:

<?php

//Nexmo

namespace Stomp;

require __DIR__ . '/../vendor/autoload.php';
include 'generate_jwt.php';

use Stomp\Client;
use Stomp\StatefulStomp;
use Stomp\Network\Connection;
use Stomp\Transport\Message;

$user = getenv("ACTIVEMQ_USER");
if( !$user ) $user = "admin";

$password = getenv("ACTIVEMQ_PASSWORD");
if( !$password ) $password = "admin";

/*$host = getenv("ACTIVEMQ_HOST");
if( !$host ) $host = "localhost";

$port = getenv("ACTIVEMQ_PORT");
if( !$port ) $port = 61613; */

$destination  = '/queue/nexmo';try {
$connection = new Connection('tcp://192.168.64.2:61613');
$stomp = new StatefulStomp(new Client($connection));
$stomp->subscribe($destination);echo "Waiting for messages...\n";
while(true) {
$frame = $stomp->read();
echo "message received";
$json = $frame->$body;
//echo($stomp);
//echo($frame);
//echo($body);
echo $json ;
}} catch(StompException $e) {
echo $e->getMessage();
}

Я пробовал несколько комбинаций для печати тела, но, похоже, ничего не работает … Они оба общаются, и я вижу их в брокере ActiveMQ, но я не могу извлечь тело …
Есть какие-нибудь подсказки?
заранее спасибо

1

Решение

Я разобрался, просто имел:

                 $frame = $stomp->read();
$body = $frame->getBody();
echo "message received $body \n";

Для этого есть функция в библиотеке Stomp.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]