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+MySQL的聊天室设计
Oct 09 PHP
PHP_Flame(Version:Progress)的原代码
Oct 09 PHP
php curl 登录163邮箱并抓取邮箱好友列表的代码(经测试)
Apr 07 PHP
PHP乱码问题,UTF-8乱码常见问题小结
Apr 09 PHP
Window 7/XP 安装Apache 2.4与PHP 5.4 的过程详解
Jun 02 PHP
php中fsockopen用法实例
Jan 05 PHP
ecshop 2.72如何修改后台访问地址
Mar 03 PHP
PHP getallheaders无法获取自定义头(headers)的问题
Mar 23 PHP
php 从一个数组中随机的取出若干个不同的数实例
Dec 31 PHP
PHP 中常量的知识整理
Apr 14 PHP
PHP利用递归函数实现无限级分类的方法
Mar 22 PHP
laravel 数据验证规则详解
Oct 23 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
第四节--构造函数和析构函数
2006/11/16 PHP
Discuz! 5.0.0论坛程序中加入一段js代码,让会员点击下载附件前自动弹出提示窗口
2007/04/18 PHP
实用的简单PHP分页集合包括使用方法
2013/10/21 PHP
PHP异常Parse error: syntax error, unexpected T_VAR错误解决方法
2014/05/06 PHP
PHP防止表单重复提交的几种常用方法汇总
2014/08/19 PHP
ThinkPHP实现的rsa非对称加密类示例
2018/05/29 PHP
JS注册/移除事件处理程序(ExtJS应用程序设计实战)
2013/05/07 Javascript
中文输入法不触发onkeyup事件的解决办法
2014/07/09 Javascript
JavaScript基础知识学习笔记
2014/12/02 Javascript
浅谈JavaScript事件的属性列表
2015/03/01 Javascript
js实现导航吸顶效果
2017/02/24 Javascript
jQuery EasyUI tree增加搜索功能的实现方法
2017/04/27 jQuery
JavaScript如何获取到导航条中HTTP信息
2017/10/10 Javascript
jQuery md5加密插件jQuery.md5.js用法示例
2018/08/24 jQuery
bootstrap+spring boot实现面包屑导航功能(前端代码)
2019/10/09 Javascript
js实现前端界面导航栏下拉列表
2020/08/27 Javascript
浅析JavaScript预编译和暗示全局变量
2020/09/03 Javascript
[56:58]VP vs Optic 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[01:20:06]TNC vs VG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python使用Apriori算法进行关联性解析
2017/12/21 Python
Python登录注册验证功能实现
2018/06/18 Python
Python 中的range(),以及列表切片方法
2018/07/02 Python
我用Python抓取了7000 多本电子书案例详解
2019/03/25 Python
django 配置阿里云OSS存储media文件的例子
2019/08/20 Python
tensorflow实现打印ckpt模型保存下的变量名称及变量值
2020/01/04 Python
Python的pygame安装教程详解
2020/02/10 Python
python数据爬下来保存的位置
2020/02/17 Python
python 错误处理 assert详解
2020/04/20 Python
HTML5+CSS3:3D展示商品信息示例
2017/01/03 HTML / CSS
学校出纳员岗位职责
2014/03/18 职场文书
2014财务人员自我评价范文
2014/09/21 职场文书
2014党员干部四风问题对照检查材料思想汇报
2014/09/24 职场文书
劳动者解除劳动合同通知书
2015/04/16 职场文书
基层党建工作简报
2015/07/21 职场文书
2015年教师节广播稿
2015/08/19 职场文书
【海涛教你打DOTA】剑圣第一人称视角解说
2022/04/01 DOTA