1.php安装stomp扩展,http://pecl.php.net/package/stomp,选择对应的版本~~!
2.因要java那边需要jms-map-json的头的消息头
客户端send.php编码:
<?php //http://www.lancehendrix.com/techdocs/incubation/Talking%20Stomp%20to%20ActiveMQ.html $st = new SStomp(); $body = array( 'map' => array( 'entry' => array( array('string' => array('contentName', 'Partner Resources')), array('string' => array('contentHREF', '123')), array('string' => array('contentId', '10034')), array('string' => array('author', 'Lance Hendrix')), array('string' => array('authorEmail', 'lance@lancehendrix.com')), array('string' => array('content', 'These are the partners we should be using...')), array('string' => array('contentType', 'blog')), array(array('string' => 'uid', 'int' => 1234)) ) ) ); $s = $st->send($body); ?>
SStomp.php
<?php /** * Basic text stomp message * * @package Stomp * @author Dejan Bosanac <dejan@nighttale.net> * @version $Revision: 23 $ */ class Stomp_Message extends StompFrame { public function __construct ($body, $headers = null) { //$this->headers['amq-msg-type'] = 'MapMessage'; $this->body = json_encode($body); //$this->headers = array_merge($this->headers,$headers); $this->headers = $headers; $this->command = "SEND"; } } class SStomp{ public $broker = 'tcp://192.168.1.121:61613'; public $queue = 'quene'; public $msg = 'bar'; public function send($msg=array()){ try { //http://pecl.php.net/package/stomp $con = new Stomp($this->broker,'admin','admin'); // send a message to the queue //$con->send($this->queue, $msg); $header = array( 'transformation' => 'jms-map-json', 'amq-msg-type' => 'MapMessage', //'DeliveryMode' => 'PERSISTENT', ); $mapMessage = new Stomp_Message($msg, $header); $f = $con->send($this->queue, $mapMessage,array()); $s = $con->subscribe($this->queue); // receive a message from the queue $msg = $con->readFrame(); print_r($msg); $con->disconnect(); } catch (Exception $e) { var_dump($e->getMessage()); } } }
原文链接:PHP通过Stomp协议与,ActiveMQ,通信所遇到的问题,转载请注明来源!