JMS:Java做事(Java Message Service)运用程序接口,是一个Java平台中关于面向中间件(MOM)的API,用于在两个运用程序之间,或分布式系统中发送,进行异步通信。

1 下载

apache-activemq-5.0.0.tar.gz

php添加stomp扩展ActiveMQ新闻中央件一 JavaScript

tar zxvf apache-activemq-5.0.0.tar.gz

cd 到bin下实行 ./activemq start

61616是给java用的tcp端口

8161是后台管理端口

activemq

2 支持的措辞

Java,C,C ++,C#,Ruby,Perl,Python,PHP

3 运用协议

OpenWire,Stomp REST,WS Notification,XMPP,AMQP

4 运用处景及问题

https://blog.csdn.net/dly1580854879/article/details/68486367

5 行列步队名称定义

/queue/email,对应后台管理页面的email行列步队/topic/query

6 activemq+stomp协议+php demo实现

stomp,php扩展安装

下载,编译安装,然后把天生的stomp.so加入php.ini文件中

extension=/usr/local/lib/php/extensions/no-debug-non-zts-20131226/stomp.so

利用命令php -m 查看是否成功

生产者,不断的向行列步队投递

#consumer.php<?phpdate_default_timezone_set('Asia/Shanghai');$queue = '/queue/email'; try { $stomp = new Stomp('tcp://10.16.77.246: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); } } else { print \"大众No frames to read\n\"大众; } } } catch(StompException $e) { die('Connection failed: ' . $e->getMessage());}

消费者,当检测到行列步队非空,就取出进行消费

消费有两种模式:推模式、拉模式

#publisher.php<?phpdate_default_timezone_set('Asia/Shanghai');$queue = '/queue/email';$msg = 'bar'; try { $stomp = new Stomp('tcp://10.16.77.246:61613'); while (true) { $stomp->send($queue, $msg.\"大众 \"大众. date(\公众Y-m-d H:i:s\"大众)); sleep(1); } } catch(StompException $e) { die('Connection failed: ' . $e->getMessage());}

php publisher.php

一直的向email行列步队里发

publisher

php consumer.php

行列步队email里的被消费,消费者cli打印内容

7 利用supervisor监控activemq,防止挂掉

[program:activemq]command=/var/www/softwares/activemq/bin/activemq;pprocess_name=%(program_name)s_%(process_num)02dprocess_name=%(program_name)snumprocs=1autostart=trueautorestart=truestopasgroup=truekillasgroup=truestartsecs=1

当activemq进程挂了会自动重启

supervisor

参考文档

1 http://activemq.apache.org/

2 http://php.net/manual/zh/book.stomp.php

3 https://blog.csdn.net/dly1580854879/article/details/68486367