php 使用ActiveMQ发送消息,与处理消息操作示例


Posted in PHP onFebruary 23, 2020

本文实例讲述了php 使用ActiveMQ发送消息,与处理消息操作。分享给大家供大家参考,具体如下:

我们以一个简单的用户注册为例,当用户点击注册按钮后,我们发送一个消息,后台php接收到该消息然后处理。

1.php代码如下:

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

$obj = new Stdclass();
//下面这些数据,实际中是用户通过前端页面post来的,这里只做演示
$obj->username = 'test';
$obj->password = '123456';
//发送一个注册消息到队列,我们这里模拟用户注册
$stomp->send('/queue/userReg', json_encode($obj));

2.php代码如下:

<?php
$stomp = new Stomp('tcp://192.168.1.222:61613');
//订阅只对一个有效,如果启动多个脚本,只有一个会接收到消息
$stomp->subscribe('/queue/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}')");
  //sendVerify();

  //表示消息被处理掉了,ack()函数很重要
  $stomp->ack($frame);
 }
 sleep(1);
}

分别运行上面两个脚本文件

> /data/php56/bin/php 1.php
> /data/php56/bin/php 2.php

php 使用ActiveMQ发送消息,与处理消息操作示例

我们还可以把上面的2.php代码分成多步执行。

2.php代码如下:

<?php
$stomp = new Stomp('tcp://192.168.1.222:61613');
$stomp->subscribe('/queue/userReg');

while(true) {
 //判断是否有读取的信息
 if($stomp->hasFrame()) {
  $frame = $stomp->readFrame();

  $data = json_decode($frame->body, true);

  //注册信息入库
  //$ret = db->query("insert into user values('{$data['username']}', '{$data['password']}')");
  //这里演示直接设成true了
  $ret = true;
  if($ret) {
   echo $data['username'], '入库成功', PHP_EOL;
   //如果入库成功,再次把数据发送到另一个消息队列中,进行下一步处理
   $stomp->send('/queue/sendVerify', $frame->body);

   $stomp->ack($frame);
  }
 }
 sleep(1);
}

3.php代码如下:

<?php
$stomp = new Stomp('tcp://192.168.1.222:61613');
$stomp->subscribe('/queue/sendVerify');

while(true) {
 //判断是否有读取的信息
 if($stomp->hasFrame()) {
  $frame = $stomp->readFrame();

  $data = json_decode($frame->body, true);

  //$ret = sendVerify()发送验证码,实际中应该是请求某接口
  $ret = true;
  if($ret) {
   echo $data['username'], '发送验证码成功', PHP_EOL;

   $stomp->ack($frame);
  }
 }
 sleep(1);
}

再次分别运行上面的三个脚本

> /data/php56/bin/php 1.php
> /data/php56/bin/php 2.php
> /data/php56/bin/php 3.php

php 使用ActiveMQ发送消息,与处理消息操作示例

php 使用ActiveMQ发送消息,与处理消息操作示例

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
discuz 首页四格:最新话题+最新回复+热门话题+精华文章插件
Aug 19 PHP
用PHP伪造referer突破网盘禁止外连的代码
Jun 15 PHP
php session应用实例 登录验证
Mar 16 PHP
php 按指定元素值去除数组元素的实现方法
Nov 04 PHP
php图片的裁剪与缩放生成符合需求的缩略图
Jan 11 PHP
用PHP即时捕捉PHP中的错误并发送email通知的实现代码
Jan 19 PHP
Laravel 5 框架入门(一)
Apr 09 PHP
PHP函数实现从一个文本字符串中提取关键字的方法
Jul 01 PHP
PHP+Mysql+jQuery实现发布微博程序 php篇
Oct 15 PHP
zen_cart实现支付前生成订单的方法
May 06 PHP
php版微信数据统计接口用法示例
Oct 12 PHP
PHP实现将上传图片自动缩放到指定分辨率,并保持清晰度封装类示例
Jun 17 PHP
php实现通过stomp协议连接ActiveMQ操作示例
Feb 23 #PHP
php ActiveMQ的安装与使用方法图文教程
Feb 23 #PHP
php 多进程编程父进程的阻塞与非阻塞实例分析
Feb 22 #PHP
php7 图形用户界面GUI 开发示例
Feb 22 #PHP
PHP Beanstalkd消息队列的安装与使用方法实例详解
Feb 21 #PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
Feb 21 #PHP
PHP pthreads v3下worker和pool的使用方法示例
Feb 21 #PHP
You might like
destoon调用企业会员公司形象图片的实现方法
2014/08/21 PHP
PHP使用mysql_fetch_object从查询结果中获取对象集的方法
2015/03/18 PHP
硬盘浏览程序,保存成网页格式便可使用
2006/12/03 Javascript
js 页面关闭前的出现提示的实现代码
2011/05/25 Javascript
jquery绑定原理 简单解析与实现代码分享
2011/09/06 Javascript
javascript中caller和callee详解
2015/08/10 Javascript
JS中使用DOM来控制HTML元素
2016/07/31 Javascript
JS实现重新加载当前页面
2016/11/29 Javascript
详解jQuery简单的表单应用
2016/12/16 Javascript
vue 2.0路由之路由嵌套示例详解
2017/05/08 Javascript
vue.js实现用户评论、登录、注册、及修改信息功能
2020/05/30 Javascript
详解Angular 开发环境搭建
2017/06/22 Javascript
JS实现基于Sketch.js模拟成群游动的蝌蚪运动动画效果【附demo源码下载】
2017/08/18 Javascript
vue 自定义组件 v-model双向绑定、 父子组件同步通信的多种写法
2017/11/27 Javascript
JavaScript使用indexOf()实现数组去重的方法分析
2018/09/04 Javascript
jquery操作checkbox的常用方法总结【附测试源码下载】
2019/06/10 jQuery
微信小程序中使用 async/await的方法实例分析
2020/05/06 Javascript
微信小程序完美解决scroll-view高度自适应问题的方法
2020/08/08 Javascript
vue实现放大镜效果
2020/09/17 Javascript
Python实现FTP上传文件或文件夹实例(递归)
2017/01/16 Python
Python编程实现蚁群算法详解
2017/11/13 Python
Python复制Word内容并使用格式设字体与大小实例代码
2018/01/22 Python
Python for循环生成列表的实例
2018/06/15 Python
python交易记录整合交易类详解
2019/07/03 Python
python实现差分隐私Laplace机制详解
2019/11/25 Python
Django认证系统user对象实现过程解析
2020/03/02 Python
python 实现ping测试延迟的两种方法
2020/12/10 Python
css3实现的下拉菜单效果示例
2014/01/22 HTML / CSS
Html5之title吸顶功能
2018/06/04 HTML / CSS
Steiff台湾官网:德国金耳釦泰迪熊
2019/12/26 全球购物
事业单位个人应聘自荐信
2013/09/21 职场文书
文明城市标语
2014/06/16 职场文书
2016年学生会感恩节活动总结
2016/04/01 职场文书
python 如何用terminal输入参数
2021/05/25 Python
MySQL 四种连接和多表查询详解
2021/07/16 MySQL
oracle设置密码复杂度及设置超时退出的功能
2022/06/28 Oracle