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 相关文章推荐
检查url链接是否已经有参数的php代码 添加 ? 或 &amp;
Feb 09 PHP
PHP中for与foreach的区别分析
Mar 09 PHP
php生成略缩图代码
Jul 16 PHP
深入php list()函数的详解
Jun 05 PHP
微信支付开发教程(一)微信支付URL配置
May 28 PHP
destoon二次开发模板及调用语法汇总
Jun 21 PHP
php堆排序实现原理与应用方法
Jan 03 PHP
PHP使用递归方式列出当前目录下所有文件的方法
Jun 02 PHP
php根据日期显示所在星座的方法
Jul 13 PHP
微信公众平台开发之天气预报功能
Aug 31 PHP
PHP数组相加操作及与array_merge的区别浅析
Nov 26 PHP
windows下的WAMP环境搭建图文教程(推荐)
Jul 27 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
PH P5.2至5.5、5.6的新增功能详解
2014/07/14 PHP
PHP响应post请求上传文件的方法
2015/12/17 PHP
php根据地址获取百度地图经纬度的实例方法
2019/09/03 PHP
js停止输出代码
2008/07/20 Javascript
JS保存和删除cookie操作 判断cookie是否存在
2013/11/13 Javascript
js生成随机数之random函数随机示例
2013/12/20 Javascript
jquery easyui 对于开始时间小于结束时间的判断示例
2014/03/22 Javascript
jQuery实现新消息闪烁标题提示的方法
2015/03/11 Javascript
简介JavaScript中的setTime()方法的使用
2015/06/11 Javascript
自己动手写的javascript前端等待控件
2015/10/30 Javascript
jQuery 3.0十大新特性最终版发布
2016/07/14 Javascript
JS中使用FormData上传文件、图片的方法
2016/08/07 Javascript
Javascript中for循环语句的几种写法总结对比
2017/01/23 Javascript
React-router中结合webpack实现按需加载实例
2017/05/25 Javascript
js 奇葩技巧之隐藏代码
2017/08/11 Javascript
Vue v2.5 调整和更新不完全问题
2017/10/24 Javascript
vue里面父组件修改子组件样式的方法
2018/02/03 Javascript
让mocha支持ES6模块的方法实现
2020/01/14 Javascript
浅析微信小程序自定义日历组件及flex布局最后一行对齐问题
2020/10/29 Javascript
[01:50]《我与DAC》之玩家:iG夺冠时的那面红旗
2018/03/29 DOTA
使用Python编写简单的端口扫描器的实例分享
2015/12/18 Python
Python编程argparse入门浅析
2018/02/07 Python
深入了解Python枚举类型的相关知识
2019/07/09 Python
使用OpenCV实现仿射变换—缩放功能
2019/08/29 Python
Python使用pycharm导入pymysql教程
2020/09/16 Python
详解python算法常用技巧与内置库
2020/10/17 Python
英国殿堂级有机护肤品牌:Rodial
2017/04/17 全球购物
党员个人思想汇报
2013/12/28 职场文书
开学寄语大全
2014/04/08 职场文书
水电站项目建议书
2014/05/12 职场文书
好的促销活动方案
2014/08/21 职场文书
2015学校图书管理员工作总结
2015/05/11 职场文书
《7的乘法口诀》教学反思
2016/02/18 职场文书
驾驶员安全责任协议书
2016/03/22 职场文书
在 SQL 语句中处理 NULL 值的方法
2021/06/07 SQL Server
一篇文章告诉你如何实现Vue前端分页和后端分页
2022/02/18 Vue.js