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动态生成VRML网页
Oct 09 PHP
PHP获取163、gmail、126等邮箱联系人地址【已测试2009.10.10】
Oct 11 PHP
新手学习PHP的一些基础知识分享
Jul 27 PHP
php中is_null,empty,isset,unset 的区别详细介绍
Apr 28 PHP
深入解析phpCB批量转换的代码示例
Jun 27 PHP
php selectradio和checkbox默认选择的实现方法详解
Jun 29 PHP
PHP四舍五入、取整、round函数使用示例
Feb 06 PHP
php自定义分页类完整实例
Dec 25 PHP
PHP面向对象学习之parent::关键字
Jan 18 PHP
PHP简单实现模拟登陆功能示例
Sep 15 PHP
浅谈laravel orm 中的一对多关系 hasMany
Oct 21 PHP
如何用RabbitMQ和Swoole实现一个异步任务系统
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
在Windows版的PHP中使用ADO
2006/10/09 PHP
PHP高级OOP技术演示
2009/08/27 PHP
PHP排序之二维数组的按照字母排序实现代码
2011/08/13 PHP
PHP中使用memcache存储session的三种配置方法
2014/04/05 PHP
深入分析PHP优化及注意事项
2016/07/04 PHP
PHP基于Redis消息队列实现发布微博的方法
2017/05/03 PHP
Jquery Ajax学习实例4 向WebService发出请求,返回实体对象的异步调用
2010/03/16 Javascript
jQuery对象与DOM对象之间的转换方法
2010/04/15 Javascript
jQuery源码分析-04 选择器-Sizzle-工作原理分析
2011/11/14 Javascript
JS 获取浏览器和屏幕宽高等信息的实现思路及代码
2013/07/31 Javascript
JavaScript定时显示广告代码分享
2015/03/02 Javascript
jquery获取及设置outerhtml的方法
2015/03/09 Javascript
JQuery插件ajaxfileupload.js异步上传文件实例
2015/05/19 Javascript
JavaScript中setMonth()方法的使用详解
2015/06/11 Javascript
js电话号码验证方法
2015/09/28 Javascript
轻松学习jQuery插件EasyUI EasyUI创建树形网络(1)
2015/11/30 Javascript
jQuery Ajax和getJSON获取后台普通json数据和层级json数据用法分析
2016/06/08 Javascript
Bootstrap基本插件学习笔记之折叠(22)
2016/12/08 Javascript
详解Javascript中new()到底做了些什么?
2018/03/29 Javascript
Element-UI中Upload上传文件前端缓存处理示例
2019/02/21 Javascript
vue项目前端错误收集之sentry教程详解
2019/05/27 Javascript
解决layui laydate 时间控件一闪而过的问题
2019/09/28 Javascript
[38:38]完美世界DOTA2联赛PWL S3 access vs Rebirth 第二场 12.17
2020/12/18 DOTA
Python中使用urllib2模块编写爬虫的简单上手示例
2016/01/20 Python
Python创建普通菜单示例【基于win32ui模块】
2018/05/09 Python
对python3标准库httpclient的使用详解
2018/12/18 Python
pycharm中使用anaconda部署python环境的方法步骤
2018/12/19 Python
Python实现决策树并且使用Graphviz可视化的例子
2019/08/09 Python
Python魔法方法 容器部方法详解
2020/01/02 Python
parser.add_argument中的action使用
2020/04/20 Python
pytorch加载语音类自定义数据集的方法教程
2020/11/10 Python
用C#语言写出在本地创建一个UDP接收端口的具体过程
2016/02/22 面试题
大专毕业生简历的自我评价
2013/10/20 职场文书
车间班组长岗位职责
2013/11/13 职场文书
关于EntityWrapper的in用法
2022/03/22 Java/Android
Spring Cloud Netflix 套件中的负载均衡组件 Ribbon
2022/04/13 Java/Android