Title

PHP使用消息中间件ActiveMq实现消息队列及配置

  • 作者:Mr_Yan
  • linux
  • 时间:2018-10-01 06:38:56
  • 821人已阅读

本文给大家介绍一个好用的免费开源消息中间件,由apache出品的ActiveMq,具有

1、跨平台

2、多语言

3、多项目

4、降低系统间模块的耦合度,解耦


官网下载地址

下载activemq-Apache ActiveMQ ™ - Download


linux 下的安装配置

下载

wget https://archive.apache.org/dist/activemq/5.14.0/apache-activemq-5.14.0-bin.tar.gz

解压

tar -zxvf apache-activemq-5.14.0-bin.tar.gz 


进入到 bin 目录下 

cd /home/apache-activemq-5.14.0/bin 

根据自己的系统版本 进入相应的目录下 启动

image.png启动服务

./activemq start


关闭服务

./activemq stop


访问地址 默认访问端口IP:8161 出现一下页面说明安装成功

image.png

ip:8161/admin 进入管理控制台 默认用户名密码 admin/admin

image.png



PHP 简单演示代码

需要借助STOMP拓展


点对点模式

填充信息

<?php
$stomp = new \Stomp('tcp://127.0.0.1:61613');

$obj = new \Stdclass();

$obj->username = 'test';
$obj->password = '888888';
//发送一个消息到队列,
//点对点模式
$stomp->send('/queue/userReg', json_encode($obj));
//消费者->生产者模式
//$stomp->send('/topic/userReg', json_encode($obj));


image.png


取出队列消息


<?
php

$stomp = new Stomp('tcp://localhost:61613');
$stomp->subscribe('/queue/userReg');

while (true) {
   //判断是否有读取的信息
if ($stomp->hasFrame()) {
$frame = $stomp->readFrame();
$data = json_decode($frame->body, true);
var_dump($data);
$stomp->ack($frame);
}
}

image.png


消费者->生产者模式


生产代码

$stomp->send('/topic/userReg', json_encode($obj));

消费代码

<?php
$stomp = new Stomp('tcp://127.0.0.1:61613');
//订阅只对一个有效,如果启动多个脚本,只有一个会接收到消息
$stomp->subscribe('/topic/userReg');
while(true) {
   //判断是否有读取的信息
    if($stomp->hasFrame()) {
$frame = $stomp->readFrame();
$data = json_decode($frame->body, true);
var_dump($data);
   //我们通过获取的数据
   //处理相应的逻辑,比如存入数据库,发送验证码等一系列操作。
   //$db->query("insert into user values('{$username}','{$password}')");
   //表示消息被处理掉了,ack()函数很重要
$stomp->ack($frame);
    }
sleep(1);
}




本文为MrYan原创文章,转载无需和我联系,但请注明来自MrYan个人博客:www.mryan888.com

文章评论

Top