thinkPHP5如何使用rabbitmq
thinkPHP5如何使用rabbitmq?
安装好 tp5 的 rabbitmq 扩展后,在项目根目录文件添加文件 rabbitmq.php 引导启动 rabbitmq。
- <?php
- define('APP_PATH', __DIR__ . '/application/');
- define('BIND_MODULE','rabbitmq/Client');
- // 加载框架引导文件
- require __DIR__ . '/thinkphp/start.php';
生成者
- private function queueEvent($message)
- {
- // error_log("\n******" . date("His") . "********\n" . print_r($message, 1) . "\n*************\n", 3,
- 'messag_event.log');
- dump($message);
- //设置你的连接
- $conn_args = array('host' => 'ip', 'port' => '5672', 'login' => 'ymq', 'password' => '123456',
- 'vhost'=>'/');
- $content = $message;
- //创建连接和channel
- $conn = new \AMQPConnection($conn_args);
- if (!$conn->connect()) {
- die("Cannot connect to the broker!\n");
- }
- $channel = new \AMQPChannel($conn);
- //创建交换机
- $e_name = 'MQTT_device_event'; //交换机名
- $ex = new \AMQPExchange($channel);
- $ex->setName($e_name);
- // $ex->setType(AMQP_EX_TYPE_TOPIC); //direct类型
- $ex->setType(AMQP_EX_TYPE_DIRECT); //direct类型
- $ex->setFlags(AMQP_DURABLE); //持久化
- $ex->declareExchange();
- }
相关推荐:《ThinkPHP教程》
运行 php 目录运行生产者
消费者
- public function index()
- {
- //连接RabbitMQ
- $conn_args = array('host' => 'ip', 'port' => '5672', 'login' => 'ymq', 'password' => '123456', 'vhost'
- => '/');
- $e_name = 'MQTT_device_event'; //交换机名
- $q_name = 'q_event'; //队列名
- $k_route = 'key_event'; //路由key
- //创建连接和channel
- $conn = new \AMQPConnection($conn_args);
- if (!$conn->connect()) {
- die("Cannot connect to the broker!\n");
- }
- $channel = new \AMQPChannel($conn);
- //创建交换机
- $ex = new \AMQPExchange($channel);
- $ex->setName($e_name);
- $ex->setType(AMQP_EX_TYPE_DIRECT); //direct类型
- $ex->setFlags(AMQP_DURABLE); //持久化
- $ex->declareExchange();
- //创建队列
- $q = new \AMQPQueue($channel);
- $q->setName($q_name);
- $q->setFlags(AMQP_DURABLE); //持久化
- $q->declareQueue(); //最好队列object在这里declare()下,否则如果是新的queue会报错
- //绑定交换机与队列,并指定路由键,可以多个路由键
- $q->bind($e_name, $k_route);
- //$q->bind($e_name, 'key_33');
- //阻塞模式接收消息
- echo "Message:\n";
- while(True){
- $q->consume(function($envelope, $queue) {
- $msg = $envelope->getBody();
- //处理数据
- echo $msg . PHP_EOL; //处理消息
- $queue->ack($envelope->getDeliveryTag()); //手动发送ACK应答
- });
- //$q->consume('processMessage', AMQP_AUTOACK); //自动ACK应答
- }
- $conn->disconnect();
- }
执行下命令 php rabbitmq
启动即可
查看队列是否被消费
登录 http://127.0.0.115672/#/queues 地址
thinkPHP5如何使用rabbitmq的更多相关文章
- 消息队列——RabbitMQ学习笔记
消息队列--RabbitMQ学习笔记 1. 写在前面 昨天简单学习了一个消息队列项目--RabbitMQ,今天趁热打铁,将学到的东西记录下来. 学习的资料主要是官网给出的6个基本的消息发送/接收模型, ...
- RabbitMq应用二
在应用一中,基本的消息队列使用已经完成了,在实际项目中,一定会出现各种各样的需求和问题,rabbitmq内置的很多强大机制和功能会帮助我们解决很多的问题,下面就一个一个的一起学习一下. 消息响应机制 ...
- 如何优雅的使用RabbitMQ
RabbitMQ无疑是目前最流行的消息队列之一,对各种语言环境的支持也很丰富,作为一个.NET developer有必要学习和了解这一工具.消息队列的使用场景大概有3种: 1.系统集成,分布式系统的设 ...
- TODO:macOS上ThinkPHP5和Semantic-UI集成
TODO:macOS上ThinkPHP5和Semantic-UI集成 1. 全局安装 (on OSX via homebrew)Composer 是 homebrew-php 项目的一部分 2. 把X ...
- RabbitMq应用一的补充(RabbitMQ的应用场景)
直接进入正题. 一.异步处理 场景:发送手机验证码,邮件 传统古老处理方式如下图 这个流程,全部在主线程完成,注册->入库->发送邮件->发送短信,由于都在主线程,所以要等待每一步完 ...
- RabbitMq应用一
RabbitMq应用一 RabbitMQ的具体概念,百度百科一下,我这里说一下我的理解,如果有少或者不对的地方,欢迎纠正和补充. 一个项目架构,小的时候,一般都是传统的单一网站系统,或者项目,三层架构 ...
- 缓存、队列(Memcached、redis、RabbitMQ)
本章内容: Memcached 简介.安装.使用 Python 操作 Memcached 天生支持集群 redis 简介.安装.使用.实例 Python 操作 Redis String.Hash.Li ...
- 消息队列性能对比——ActiveMQ、RabbitMQ与ZeroMQ(译文)
Dissecting Message Queues 概述: 我花了一些时间解剖各种库执行分布式消息.在这个分析中,我看了几个不同的方面,包括API特性,易于部署和维护,以及性能质量..消息队列已经被分 ...
- windows下 安装 rabbitMQ 及操作常用命令
rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统.它遵循Mozilla Public License开源协议,采用 Erlang 实现的工业级的消息队列(MQ)服务器,Rab ...
随机推荐
- Windows怎么安装配置Elasticsearch
进入Elasticsearch官网,点击Download,Elasticsearch默认端口9200 然后进入下图:有各种版本,我选择windows版本 下载之后,解压得到Elasticsearch文 ...
- 洛谷P1523 旅行商简化版(DP)
题目: P1523 旅行商简化版 解析 可以看做是两个人同时从西往东走,经过不一样的点,走到最东头的方案数 设\(f[i][j]\)表示一个人走到i,一个人走到j的最短距离(\(i<j\)) 第 ...
- Vue – 基础学习(4):事件修饰符
Vue – 基础学习(3):事件修饰符
- oracle高级部分
回顾 多表关联查询的方式 内连接 根据AB表关联的条件进行过滤查询,只保留满足条件数据 Select * from a,b where a.xxx=b.xxx; Select * from a inn ...
- UUID生成库libuuid和crossguid
libuuid是一个开源的用于生成UUID(Universally Unique Identifier,通用唯一标识符)的库. 可从https://sourceforge.net/projects/l ...
- 隐马尔科夫模型(Hidden Markov Models) 系列之五
转自:http://blog.csdn.net/eaglex/article/details/6458541 维特比算法(Viterbi Algorithm) 找到可能性最大的隐藏序列 通常我们都有一 ...
- AtCoder - 4496 G - k-DMC
AtCoder - 4496 G - k-DMC 题目 长度为n的字符串,q次查询,问"DMC"(不要求连续)在字符串中出现的次数,其中D和M的距离不超过k. 错误思路 通过遍历字 ...
- Win10开启快速启动后关机变重启
同样可以用来解决,“msconfig引导为空”,“默认操作系统为空”,“win10改为uefi启动后关机变重启”,“legacy转uefi后无法关机” 问题起因 换完主板和cpu后,新的主板在开机时总 ...
- 第08节-开源蓝牙协议栈BTStack数据处理
本篇博客根据韦东山的视频整理所得. 在上篇博客,通过阅读BTStack的源码,大体了解了其框架,对于任何一个BTStack的应用程序都有一个main函数,这个main函数是统一的.这个main函数做了 ...
- flask实战-个人博客-数据库-生成虚拟数据 --
3.生成虚拟数据 为了方便编写程序前台和后台功能,我们在创建数据库模型后就编写生成虚拟数据的函数. 1)管理员 用于生成虚拟管理员信息的fake_admin()函数如下所示: personalBlog ...