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实现框架(一)
Oct 09 PHP
十天学会php(1)
Oct 09 PHP
PHP与MySQL交互使用详解
Oct 09 PHP
台湾中原大学php教程孙仲岳主讲
Jan 07 PHP
php循环输出数据库内容的代码
May 24 PHP
利用PHP制作简单的内容采集器的原理分析
Oct 01 PHP
windows环境下php配置memcache的具体操作步骤
Jun 09 PHP
php实现按文件名搜索文件的远程文件查找器
May 10 PHP
[原创]ThinkPHP中SHOW_RUN_TIME不能正常显示运行时间的解决方法
Oct 10 PHP
PHPStorm+XDebug进行调试图文教程
Jun 13 PHP
中高级PHP程序员应该掌握哪些技术?
Sep 23 PHP
php使用json-schema模块实现json校验示例
Sep 28 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
PHP5 安装方法
2006/10/09 PHP
PHP5+UTF8多文件上传类
2008/10/17 PHP
php遍历类中包含的所有元素的方法
2015/05/12 PHP
thinkphp命名空间用法实例详解
2015/12/30 PHP
PHP 的比较运算与逻辑运算详解
2016/05/12 PHP
PHP实现对数组分页处理实例详解
2017/02/07 PHP
php实现表单提交上传文件功能
2018/05/28 PHP
laravel在中间件内生成参数并且传递到控制器中的2种姿势
2019/10/15 PHP
How to Auto Include a Javascript File
2007/02/02 Javascript
javascript 一个自定义长度的文本自动换行的函数
2007/08/19 Javascript
网页加载时页面显示进度条加载完成之后显示网页内容
2012/12/23 Javascript
js单词形式的运算符
2014/05/06 Javascript
基于JavaScript+HTML5 实现打地鼠小游戏逻辑流程图文详解(附完整代码)
2017/11/02 Javascript
vue+iview写个弹框的示例代码
2017/12/05 Javascript
JS实现DOM删除节点操作示例
2018/04/04 Javascript
JavaScript设计模式之责任链模式实例分析
2019/01/16 Javascript
node中使用es6/7/8(支持性与性能)
2019/03/28 Javascript
浅谈如何优雅处理JavaScript异步错误
2019/11/12 Javascript
浅谈vue 多个变量同时赋相同值互相影响
2020/08/05 Javascript
Python实现Linux命令xxd -i功能
2016/03/06 Python
python批量修改文件编码格式的方法
2018/05/31 Python
python实现飞机大战微信小游戏
2020/03/21 Python
对python的unittest架构公共参数token提取方法详解
2018/12/17 Python
使用 Visual Studio Code(VSCode)搭建简单的Python+Django开发环境的方法步骤
2018/12/17 Python
Python3.4学习笔记之 idle 清屏扩展插件用法分析
2019/03/01 Python
Python自动化运维之Ansible定义主机与组规则操作详解
2019/06/13 Python
Python3实现mysql连接和数据框的形成(实例代码)
2020/01/17 Python
廉价航班、机票和酒店:JustFly
2018/02/07 全球购物
5个HTML5的常用本地存储方式详解与介绍
2021/03/27 HTML / CSS
资料员的岗位职责
2013/11/20 职场文书
前台领班岗位职责
2013/12/04 职场文书
清明节网上祭英烈活动总结
2014/04/30 职场文书
推荐信格式要求
2014/05/09 职场文书
财政专业大学生职业生涯规划书
2014/09/17 职场文书
思想品德课教学反思
2016/02/24 职场文书
关于vue-router-link选择样式设置
2022/04/30 Vue.js