2017-08-16 60 views
1

我想創建一個json,我希望從一個生產者發送到另一個,以後需要分解並使用它。 所以我使用activemq,並踐踏,因爲我在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經紀人,但我不能提取身體... 任何線索? 預先感謝您

回答

0

我想通了,只是有:

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

有是它的一個功能,在重踏庫。