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 相关文章推荐
使用zend studio for eclipse不能激活代码提示功能的解决办法
Oct 11 PHP
PHP 长文章分页函数 带使用方法,不会分割段落,翻页在底部
Oct 22 PHP
php4与php5的区别小结(配置异同)
Dec 20 PHP
关于ob_get_contents(),ob_end_clean(),ob_start(),的具体用法详解
Jun 24 PHP
php使用codebase生成随机数
Mar 25 PHP
PHP用星号隐藏部份用户名、身份证、IP、手机号等实例
Apr 08 PHP
php中使用array_filter()函数过滤空数组的实现代码
Aug 19 PHP
常用PHP框架功能对照表
Oct 23 PHP
php获取错误信息的方法
Jul 17 PHP
php使用正则验证中文
Apr 06 PHP
thinkphp3.2实现在线留言提交验证码功能
Jul 19 PHP
Yii 2.0实现联表查询加搜索分页的方法示例
Aug 02 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
Mysql的常用命令
2006/10/09 PHP
FCKeditor添加自定义按钮
2008/03/27 PHP
CI框架学习笔记(二) -入口文件index.php
2014/10/27 PHP
PDO预处理语句PDOStatement对象使用总结
2014/11/20 PHP
如何在PHP中读写文件
2020/09/07 PHP
跟我学习javascript的for循环和for...in循环
2015/11/18 Javascript
Bootstrap基本组件学习笔记之下拉菜单(7)
2016/12/07 Javascript
Angularjs中ng-repeat的简单实例
2017/08/25 Javascript
Bootstrap treeview实现动态加载数据并添加快捷搜索功能
2018/01/07 Javascript
Element-ui之ElScrollBar组件滚动条的使用方法
2018/09/14 Javascript
Vue中使用canvas方法总结
2019/02/12 Javascript
vue-cli webpack配置文件分析
2019/05/20 Javascript
vue实现图片预览组件封装与使用
2019/07/13 Javascript
vue v-for直接循环数字实例
2019/11/07 Javascript
用webAPI实现图片放大镜效果
2020/11/23 Javascript
[01:30]我们共输赢 完美世界城市挑战赛开启全新赛季
2019/04/19 DOTA
使用 Python 处理 JSON 格式的数据
2019/07/22 Python
selenium+PhantomJS爬取豆瓣读书
2019/08/26 Python
用Python实现职工信息管理系统
2020/12/30 Python
美国最受欢迎的度假目的地优惠套餐:BookVIP
2018/09/27 全球购物
毕业生怎样写好自荐信
2013/11/11 职场文书
医院办公室主任职责
2013/12/29 职场文书
优秀的自荐信要注意哪些
2014/01/03 职场文书
2014年教师节寄语
2014/04/03 职场文书
小学阳光体育活动总结
2014/07/05 职场文书
小学六一儿童节活动方案
2014/08/27 职场文书
安全伴我行演讲稿
2014/09/04 职场文书
农村党建工作汇报材料
2014/10/27 职场文书
我的中国梦主题教育活动总结
2015/05/07 职场文书
如何书写先进事迹材料?
2019/07/02 职场文书
关于党风廉政建设宣传教育月的活动总结!
2019/08/08 职场文书
CSS的class与id常用的命名规则
2021/05/18 HTML / CSS
利用Python判断你的密码难度等级
2021/06/02 Python
Python中的嵌套循环详情
2022/03/23 Python
利用Apache Common将java对象池化的问题
2022/06/16 Servers
js基于div丝滑实现贝塞尔曲线
2022/09/23 Javascript