【问题标题】:How to read body of message send by stomp如何阅读 stomp 发送的消息正文
【发布时间】:2018-01-24 20:36:02
【问题描述】:

我正在尝试创建一个我希望从一个生产者发送到另一个生产者的 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 代理中看到它们,但我无法提取正文... 有什么线索吗? 提前谢谢你

【问题讨论】:

    标签: php activemq stomp


    【解决方案1】:

    我想通了,刚刚:

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

    在 Stomp 库中有一个函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-17
      • 2019-02-14
      • 1970-01-01
      相关资源
      最近更新 更多