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 相关文章推荐
PHP批量生成缩略图的代码
Jul 19 PHP
解析php mysql 事务处理回滚操作(附实例)
Aug 05 PHP
PHP之APC缓存详细介绍 apc模块安装
Jan 13 PHP
php把数据表导出为Excel表的最简单、最快的方法(不用插件)
May 10 PHP
Thinkphp和onethink实现微信支付插件
Apr 13 PHP
php版微信公众平台回复中文出现乱码问题的解决方法
Sep 22 PHP
PHP实现Google plus的好友拖拽分组效果
Oct 21 PHP
Laravel中任务调度console使用方法小结
May 07 PHP
php记录搜索引擎爬行记录的实现代码
Mar 02 PHP
php中curl和soap方式请求服务超时问题的解决
Jun 11 PHP
thinkPHP5框架分页样式类完整示例
Sep 01 PHP
TP5(thinkPHP框架)实现后台清除缓存功能示例
May 29 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
萌王史莱姆”萌王性别尴尬!那“萌战”归女组还是男?
2018/12/17 日漫
php中根据变量的类型 选择echo或dump
2012/07/05 PHP
简单介绍win7下搭建apache+php+mysql开发环境
2015/08/06 PHP
PHP实现发送邮件的方法(基于简单邮件发送类)
2015/12/17 PHP
PHP简单判断iPhone、iPad、Android及PC设备的方法
2016/10/11 PHP
PHP读取zip文件的方法示例
2016/11/17 PHP
PHP实现的mysql主从数据库状态检测功能示例
2017/07/20 PHP
thinkPHP5.1框架使用SemanticUI实现分页功能示例
2019/08/03 PHP
extjs 为某个事件设置拦截器
2010/01/15 Javascript
一个简单的js鼠标划过切换效果
2010/06/30 Javascript
40款非常棒的jQuery 插件和制作教程(系列一)
2011/10/26 Javascript
Javascript call和apply区别及使用方法
2013/11/14 Javascript
JQuery中$(document)是什么意思有什么作用
2014/07/21 Javascript
每天一篇javascript学习小结(RegExp对象)
2015/11/17 Javascript
js正则表达式验证表单【完整版】
2017/03/06 Javascript
jQuery实现图片简单轮播功能示例
2018/08/13 jQuery
在Bootstrap开发框架中使用dataTable直接录入表格行数据的方法
2018/10/25 Javascript
新年快乐! javascript实现超级炫酷的3D烟花特效
2019/01/30 Javascript
详解mpvue中小程序自定义导航组件开发指南
2019/02/11 Javascript
在element-ui的select下拉框加上滚动加载
2019/04/18 Javascript
微信小程序搜索框样式并实现跳转到搜索页面(小程序搜索功能)
2020/03/10 Javascript
Ant-design-vue Table组件customRow属性的使用说明
2020/10/28 Javascript
[05:15]DOTA2英雄梦之声_第16期_灰烬之灵
2014/06/21 DOTA
Python探索之修改Python搜索路径
2017/10/25 Python
python 检查是否为中文字符串的方法
2018/12/28 Python
Python post请求实现代码实例
2020/02/28 Python
对Keras中predict()方法和predict_classes()方法的区别说明
2020/06/09 Python
Under Armour安德玛德国官网:美国高端运动科技品牌
2019/03/09 全球购物
电焊工岗位工作职责
2014/07/09 职场文书
扶贫办主任查摆“四风”问题个人对照检查材料思想汇报
2014/10/02 职场文书
汤姆索亚历险记读书笔记
2015/06/29 职场文书
《当代神农氏》教学反思
2016/02/23 职场文书
2016年圣诞节义工活动总结
2016/04/01 职场文书
Angular性能优化之第三方组件和懒加载技术
2021/05/10 Javascript
拒绝盗图!教你怎么用python给图片加水印
2021/06/04 Python
Java版 简易五子棋小游戏
2022/05/04 Java/Android