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 相关文章推荐
上传文件先创建目录 再上传到目录里面去
Dec 29 PHP
php学习笔记 php中面向对象三大特性之一[封装性]的应用
Jun 13 PHP
PHP 无限分类三种方式 非函数的递归调用!
Aug 26 PHP
PHP提交表单失败后如何保留已经填写的信息
Jun 20 PHP
从零开始学YII2框架(一)通过Composer安装Yii2框架
Aug 20 PHP
php导出CSV抽象类实例
Sep 24 PHP
大家都应该掌握的PHP关联数组使用技巧
Dec 25 PHP
PHP 匿名函数与注意事项详细介绍
Nov 26 PHP
yii2实现 &quot;上一篇,下一篇&quot; 功能的代码实例
Feb 04 PHP
Laravel向公共模板赋值方法总结
Jun 25 PHP
如何解决PHP获取不到SESSION信息之一般情况
Oct 10 PHP
如何在Laravel5.8中正确地应用Repository设计模式
Nov 26 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
生成卡号php代码
2008/04/09 PHP
php 根据url自动生成缩略图并处理高并发问题
2014/01/23 PHP
PHP生成随机数的方法实例分析
2015/01/22 PHP
微信公众平台开发教程⑤ 微信扫码支付模式介绍
2019/04/10 PHP
setTimeout与setInterval在不同浏览器下的差异
2010/01/24 Javascript
jquery 实现二级/三级/多级联动菜单的思路及代码
2013/04/08 Javascript
javascript简单实现表格行间隔显示颜色并高亮显示
2013/11/29 Javascript
JavaScript中的6种运算符总结
2014/10/16 Javascript
Thinkjs3新手入门之如何使用静态资源目录
2017/12/06 Javascript
vue router的基本使用和配置教程
2018/11/05 Javascript
Node+OCR实现图像文字识别功能
2018/11/26 Javascript
layui自己添加图片按钮并点击跳转页面的例子
2019/09/14 Javascript
JavaScript 实现自己的安卓手机自动化工具脚本(推荐)
2020/05/13 Javascript
[05:46]DOTA2英雄梦之声_第18期_陈
2014/06/20 DOTA
使用python将mdb数据库文件导入postgresql数据库示例
2014/02/17 Python
python删除不需要的python文件方法
2018/04/24 Python
Python中的函数作用域
2018/05/07 Python
通过Python模块filecmp 对文件比较的实现方法
2018/06/29 Python
浅谈python中真正关闭socket的方法
2018/12/18 Python
对Python3中dict.keys()转换成list类型的方法详解
2019/02/03 Python
Python 3 实现定义跨模块的全局变量和使用教程
2019/07/07 Python
搭建python django虚拟环境完整步骤详解
2019/07/08 Python
Python定时任务APScheduler的实例实例详解
2019/07/22 Python
Python 获取项目根路径的代码
2019/09/27 Python
Python3 socket即时通讯脚本实现代码实例(threading多线程)
2020/06/01 Python
Matplotlib 折线图plot()所有用法详解
2020/07/28 Python
Python selenium爬取微信公众号文章代码详解
2020/08/12 Python
Python字符串的15个基本操作(小结)
2021/02/03 Python
2014年大学生村官工作总结
2014/11/19 职场文书
优秀团支部申报材料
2014/12/26 职场文书
小学生读书笔记
2015/07/01 职场文书
2016年过年放假安排通知
2015/08/18 职场文书
高中体育课教学反思
2016/02/16 职场文书
2016年度师德标兵先进事迹材料
2016/02/26 职场文书
pytorch查看网络参数显存占用量等操作
2021/05/12 Python
《巫师》是美食游戏?CDPR10月将推出《巫师》官方食谱
2022/04/03 其他游戏