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 相关文章推荐
域名查询代码公布
Oct 09 PHP
PHP调用三种数据库的方法(1)
Oct 09 PHP
Apache 配置详解(最好的APACHE配置教程)
Jul 04 PHP
PHP Curl多线程原理实例详解
Nov 06 PHP
wordpress自定义url参数实现路由功能的代码示例
Nov 28 PHP
php生成过去100年下拉列表的方法
Jul 20 PHP
php自定义分页类完整实例
Dec 25 PHP
使用php完成常见的文件上传功能(推荐)
Jan 13 PHP
PHP文字转图片功能原理与实现方法分析
Aug 31 PHP
PHP实现求两个字符串最长公共子串的方法示例
Nov 17 PHP
深入研究PHP中的preg_replace和代码执行
Aug 15 PHP
PHP网页缓存技术优点及代码实例
Jul 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
初学者入门:细述PHP4的核心Zend
2006/09/05 PHP
第十四节--命名空间
2006/11/16 PHP
深入php-fpm的两种进程管理模式详解
2013/06/03 PHP
Codeigniter注册登录代码示例
2014/06/12 PHP
PHP+HTML+JavaScript+Css实现简单爬虫开发
2016/03/28 PHP
ThinkPHP6.0如何利用自定义验证规则规范的实现登陆
2020/12/16 PHP
检测是否已安装 .NET Framework 3.5的js脚本
2009/02/14 Javascript
IE6、IE7中setAttribute不支持class/for/rowspan/colspan等属性
2011/08/28 Javascript
JS链式调用的实现方法
2013/03/07 Javascript
Jquery.addClass始终无效原因分析
2013/09/08 Javascript
JavaScript中对循环语句的优化技巧深入探讨
2014/06/06 Javascript
浅谈javascript的Touch事件
2015/09/27 Javascript
非常实用的vue导航钩子
2017/03/20 Javascript
JS仿QQ好友列表展开、收缩功能(第一篇)
2017/07/07 Javascript
基于rollup的组件库打包体积优化小结
2018/06/18 Javascript
Angular Excel 导入与导出的实现代码
2019/04/17 Javascript
如何让微信小程序页面之间的通信不再变困难
2019/06/03 Javascript
vue动态绘制四分之三圆环图效果
2019/09/03 Javascript
利用Pandas 创建空的DataFrame方法
2018/04/08 Python
python爬取基于m3u8协议的ts文件并合并
2019/04/26 Python
为什么从Python 3.6开始字典有序并效率更高
2019/07/15 Python
Python Threading 线程/互斥锁/死锁/GIL锁
2019/07/21 Python
用Pytorch训练CNN(数据集MNIST,使用GPU的方法)
2019/08/19 Python
利用python、tensorflow、opencv、pyqt5实现人脸实时签到系统
2019/09/25 Python
tensorflow之tf.record实现存浮点数数组
2020/02/17 Python
Python制作一个仿QQ办公版的图形登录界面
2020/09/22 Python
香港草莓网土耳其网站:Strawberrynet TR
2017/03/02 全球购物
手工制作的意大利太阳镜和光学元件:Illesteva
2019/01/19 全球购物
银行办理业务介绍信
2014/01/18 职场文书
《囚绿记》教学反思
2014/03/01 职场文书
2014城乡环境综合治理工作总结
2014/12/19 职场文书
普通员工辞职信范文
2015/05/12 职场文书
2015年乡镇食品安全工作总结
2015/10/22 职场文书
postgreSQL数据库基础知识介绍
2022/04/12 PostgreSQL
使用Nginx的访问日志统计PV与UV
2022/05/06 Servers
TaiShan 200服务器安装Ubuntu 18.04的图文教程
2022/06/28 Servers