PHP中使用ActiveMQ实现消息队列
前面我们已经学了怎样部署ActiveMQ。
我们知道通过ActiveMQ的一个管理后台能够查看任务队列。
今天
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ2l0aHViXzI2NjcyNTUz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这里写图片描写叙述" title="">
用PHP来操作ActiveMQ。我们能够借助一个第三方扩展。
下载:
composer require fusesource/stomp-php:2.0.*
然后新建test.php:
<?
php
require __DIR__.'/vendor/autoload.php'; //引入自己主动载入的文件
$connect = new \FuseSource\Stomp\Stomp('tcp://10.211.55.13/:61613');
$connect->connect();
$userId = 1001;
$result = $connect->send('email',$userId); //比方发邮件
var_dump($result);
发送消息成功。打印bool(true)
我们在ActiveMQ自带的管理后台查看,确实有一个名为”email”的队列。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ2l0aHViXzI2NjcyNTUz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这里写图片描写叙述" title="">
上面我们发送的一个id,我们还能够发送json数据。
$data = array('id'=>1001,'email'=>'110@qq.com','content'=>'test');
$result = $connect->send('email',json_encode($data));
我们在MQ后台能够查看消息具体
上面的代码到这里,还不够完美。假设我们server重新启动了activemq。没有处理的消息会丢失。
这个时候我们须要用到send()方法的第三个參数。
//消息持久化 persistent为true,字符串的'true'
$result = $connect->send('email',json_encode($data),array('persistent'=>'true'));
前面我们完毕了『发送』
给mqserver发送消息(email消息)。
那么在mq的队列中的任务,又是怎么处理的呢?
<?php
require __DIR__.'/vendor/autoload.php'; //引入自己主动载入的文件
$connect = new \FuseSource\Stomp\Stomp('tcp://10.211.55.13/:61613');
$connect->connect();
//订阅队列消息
$connect->subscribe('email');
if ($connect->hasFrameToRead()){
$frame = $connect->readFrame();
print_r(
PHP中使用ActiveMQ实现消息队列的更多相关文章
- zookeeper + LevelDB + ActiveMQ实现消息队列高可用
通过集群实现消息队列高可用. 消息队列在项目中存储订单.邮件通知.数据分发等重要信息,故对消息队列稳定可用性有高要求. 现在通过zookeeper选取activemq leader的形式实现当某个ac ...
- 商城08——activeMQ 使用消息队列同步索引库
1. 课程计划 1.什么是MQ 2.MQ的应用场景 3.ActiveMQ的使用方法. 4.使用消息队列实现商品同步. 2. 同步索引库分析 方案一:在taotao-manager中,添加商品的业务 ...
- ucos中信号量 事件标志 消息队列都怎么用
信号量 事件标志和消息队列分别应用于什么场景(反正我学的时候有点闹不清,现在总结一下): 信号量和事件标志用于任务同步.详细来说,这个功能可以替代以前裸机中你打一个标记的功能,比如使用了一个定时器,5 ...
- activeMq延迟消息队列
Long delay = 30 * 1000L; jmsTemplate.send(type.getValue(),new MessageCreator() { @Override public Me ...
- PHP中利用redis实现消息队列处理高并发请求
将请求存入redis 为了模拟多个用户的请求,使用一个for循环替代 //redis数据入队操作 $redis = new Redis(); $redis->connect('127.0.0.1 ...
- Web应用中的轻量级消息队列
Web应用中为什么会需要消息队列?主要原因是由于在高并发环境下,由于来不及同步处理,请求往往会发生堵塞,比如说,大量的insert,update之类的请求同时到达mysql,直接导致无数的行锁表锁,甚 ...
- ActiveMQ基本详解与总结& 消息队列-推/拉模式学习 & ActiveMQ及JMS学习
转自:https://www.cnblogs.com/Survivalist/p/8094069.html ActiveMQ基本详解与总结 基本使用可以参考https://www.cnblogs.co ...
- 线程安全使用(四) [.NET] 简单接入微信公众号开发:实现自动回复 [C#]C#中字符串的操作 自行实现比dotcore/dotnet更方便更高性能的对象二进制序列化 自已动手做高性能消息队列 自行实现高性能MVC WebAPI 面试题随笔 字符串反转
线程安全使用(四) 这是时隔多年第四篇,主要是因为身在东软受内网限制,好多文章就只好发到东软内部网站,懒的发到外面,现在一点点把在东软写的文章给转移出来. 这里主要讲解下CancellationT ...
- ActiveMQ 消息队列服务
1 ActiveMQ简介 1.1 ActiveMQ是什么 ActiveMQ是一个消息队列应用服务器(推送服务器).支持JMS规范. 1.1.1 JMS概述 全称:Java Message Serv ...
随机推荐
- ExtJS 教程目录
今天我创建了一个小组,取名ExtJS互助团,欢迎朋友们加入!遇到问题需要帮助的时候别忘了ExtJS互助团!希望更多的园友加入进来,帮别人,也是帮自己!组内讨论不限于ExtJS,还包括FineUI.Ex ...
- 用纯JAVA代码来创建视图
package com.kale.codeview; import android.os.Bundle; import android.support.v7.app.ActionBarActivity ...
- Eclipse设置方法模板
我们在项目中进行代码书写的时候,对个人所写的代码打上个人的标签的话,这样便于后期代码的维护跟踪,好处多多. 设置注释模板的入口: Window->Preference->Java-> ...
- [Web 前端] td长度固定,内容过长,超过部分用省略号代替
cp from : https://blog.csdn.net/bsh_csn/article/details/51829103 html的table表格中td长度固定,当内容过长时,超过部分用省略号 ...
- Asp.Net 获取物理路径
一.AppDomain 1.AppDomin获取当前前程序域目录 2.不需要请求上线文实例,例如在Global.ascx中访问等 //网站物理目录 AppDomain.CurrentDomain.Ba ...
- Error:Program type already present: android.arch.lifecycle.LiveData
Apparently, this is intended behavior: com.firebaseui:firebase-ui-firestore:3.1.0 depends on android ...
- [转]小心PHP的类定义顺序与继承的问题
FROM : http://www.pakey.net/blog/php-class-shunxu.html 以下代码的运行环境均为PHP5.3.11先来看一段代码 <?php class A ...
- C#自带类库实现邮件发送
1.首先引入命名空间using System.Net.Mail; 2.将发送的邮件的功能封装成一个类,该类中包含了发送邮件的基本功能:收件人(多人),抄送(多人),发送人,主题,邮件正文,附件等,封装 ...
- WHY数学图形显示工具
软件功能:输入一个二元数学表达式,含有两个参数变量X和Y,显示该数学表达式的三维图形. 很久之前就有写这个软件的想法,却一直没有激情和动力,终于在年假这两天完成了.以此软件纪念我那十几年前的高中生活, ...
- 【StatLearn】统计学习中knn算法实验(2)
接着统计学习中knn算法实验(1)的内容 Problem: Explore the data before classification using summary statistics or vis ...