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 相关文章推荐
wordpress之wp-settings.php
Aug 17 PHP
php 获取当前访问的url文件名的方法小结
Feb 08 PHP
PHP判断文章里是否有图片的简单方法
Jul 26 PHP
php自动加载方式集合
Apr 04 PHP
php基于dom实现读取图书xml格式数据的方法
Feb 03 PHP
Laravel中encrypt和decrypt的实现方法
Sep 24 PHP
PHP函数积累总结
Mar 19 PHP
PHP中的empty、isset、isnull的区别与使用实例
Mar 22 PHP
laravel框架模板之公共模板、继承、包含实现方法分析
Aug 30 PHP
PHP 文件写入和读取操作实例详解【必看篇】
Nov 04 PHP
Laravel 框架基于自带的用户系统实现登录注册及错误处理功能分析
Apr 14 PHP
php字符串函数 str类常见用法示例
May 15 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中的字符串函数
2006/10/09 PHP
PHP 服务器配置(使用Apache及IIS两种方法)
2009/06/01 PHP
php无限分类且支持输出树状图的详细介绍
2013/06/19 PHP
php使用google地图应用实例
2014/12/31 PHP
基于PHP+jQuery+MySql实现红蓝(顶踩)投票代码
2015/08/25 PHP
CentOS7编译安装php7.1的教程详解
2019/04/18 PHP
php时间戳转换代码详解
2019/08/04 PHP
仅IE6/7/8中innerHTML返回值忽略英文空格的问题
2011/04/07 Javascript
JavaScript中OnLoad几种使用方法
2012/12/15 Javascript
js和html5实现手机端刮刮卡抽奖效果完美兼容android/IOS
2013/11/18 Javascript
JavaScript中setFullYear()方法的使用详解
2015/06/11 Javascript
Angular2 自定义validators的实现方法
2017/07/05 Javascript
nodejs开发微信小程序实现密码加密
2017/07/11 NodeJs
JavaScript实现的搜索及高亮显示功能示例
2017/08/14 Javascript
jquery获取链接地址和跳转详解(推荐)
2017/08/15 jQuery
element-ui 限制日期选择的方法(datepicker)
2018/05/16 Javascript
JS实现的JSON序列化操作简单示例
2018/07/02 Javascript
微信小程序实现选项卡效果
2018/11/06 Javascript
JS解惑之Object中的key是有序的么
2019/05/06 Javascript
用Vue.js方法创建模板并使用多个模板合成
2019/06/28 Javascript
[01:19:23]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第二场
2018/04/06 DOTA
精确查找PHP WEBSHELL木马的方法(1)
2011/04/12 Python
pygame学习笔记(5):游戏精灵
2015/04/15 Python
Python计算字符宽度的方法
2016/06/14 Python
教你用一行Python代码实现并行任务(附代码)
2018/02/02 Python
使用python的pexpect模块,实现远程免密登录的示例
2019/02/14 Python
浅谈Django中的QueryDict元素为数组的坑
2020/03/31 Python
使用keras根据层名称来初始化网络
2020/05/21 Python
canvas像素画板的实现代码
2018/11/21 HTML / CSS
Html5新特性用canvas标签画多条直线附效果截图
2014/06/30 HTML / CSS
Lookfantastic意大利官网:英国知名美妆购物网站
2019/05/31 全球购物
研究生考核个人自我鉴定
2014/03/27 职场文书
赔偿协议书范本
2014/04/15 职场文书
安全环保标语
2014/06/09 职场文书
情人节单身感言
2015/08/03 职场文书
CentOS下安装Jenkins的完整步骤
2022/04/07 Servers