因为php的stomp扩展需要php5.2.2以上的版本,为了方便直接rpm安装了(之前用php5.4.6通过phpize的方法怎么也装不上不知道是不是版本兼容性问题)系统centos6.5 x64,所安装php版本为5.3.3,stomp版本为1.0.5
1、安装php和stomp扩展
yum install php php-devel php-pear openssl openssl-devel
pecl install stomp
安装好之后通过命令php -i|grep -i stomp看是否有信息输入,如下:
Stomp
Stomp => enabled
stomp.default_broker => tcp://localhost:61613 => tcp://localhost:61613
stomp.default_connection_timeout_sec => 2 => 2
stomp.default_connection_timeout_usec => 0 => 0
stomp.default_read_timeout_sec => 2 => 2
stomp.default_read_timeout_usec => 0 => 0
2、activemq在配置文件activemq.xml的"transportConnectors"节点增加以下内容,重启生效;
<transportConnector name="stomp" uri="stomp://localhost:61613"/>
nestat -ntlp 查看61613端口是否监听
3、生产端和消费端示例代码
生产端producer.php
<?php
$queue = '/topic/phptest';
$msg = 'bar';
print_r($argv);
$msg = $argv[1];
try {
$stomp = new Stomp('tcp://localhost:61613');
while (true) {
$stomp->send($queue, $msg." ". date("Y-m-d H:i:s"));
sleep(1);
}
} catch(StompException $e) {
die('Connection failed: ' . $e->getMessage());
}
?>
消费端consumer.php
<?php
$queue = '/topic/phptest';
try {
$stomp = new Stomp('tcp://localhost:61613');
$stomp->subscribe($queue);
while (true) {
if ($stomp->hasFrame()) {
$frame = $stomp->readFrame();
if ($frame != NULL) {
print "Received: " . $frame->body . " - time now is " . date("Y-m-d H:i:s"). "\n";
$stomp->ack($frame);
}
// sleep(1);
}
else {
print "No frames to read\n";
}
}
} catch(StompException $e) {
die('Connection failed: ' . $e->getMessage());
}
?>
通过执行 php producer.php 和 php consumer.php来进行mq消息存取。
参考地址:http://www.supertom.com/code/activemq-php-stomp-quickstart.html
通过phpize安装扩展的方法可参考:http://xukaizijian.blog.163.com/blog/static/170433119201168105155472/