thinkPHP5如何使用rabbitmq?

安装好 tp5 的 rabbitmq 扩展后,在项目根目录文件添加文件 rabbitmq.php 引导启动 rabbitmq。

  1. <?php
  2.  
  3. define('APP_PATH', __DIR__ . '/application/');
  4.  
  5. define('BIND_MODULE','rabbitmq/Client');
  6.  
  7. // 加载框架引导文件
  8.  
  9. require __DIR__ . '/thinkphp/start.php';
   

生成者

  1. private function queueEvent($message)
  2.  
  3. {
  4.  
  5. // error_log("\n******" . date("His") . "********\n" . print_r($message, 1) . "\n*************\n", 3,
  6.  
  7. 'messag_event.log');
  8.  
  9. dump($message);
  10.  
  11. //设置你的连接
  12.  
  13. $conn_args = array('host' => 'ip', 'port' => '5672', 'login' => 'ymq', 'password' => '123456',
  14.  
  15. 'vhost'=>'/');
  16.  
  17. $content = $message;
  18.  
  19. //创建连接和channel
  20.  
  21. $conn = new \AMQPConnection($conn_args);
  22.  
  23. if (!$conn->connect()) {
  24.  
  25. die("Cannot connect to the broker!\n");
  26.  
  27. }
  28.  
  29. $channel = new \AMQPChannel($conn);
  30.  
  31. //创建交换机
  32.  
  33. $e_name = 'MQTT_device_event'; //交换机名
  34.  
  35. $ex = new \AMQPExchange($channel);
  36.  
  37. $ex->setName($e_name);
  38.  
  39. // $ex->setType(AMQP_EX_TYPE_TOPIC); //direct类型
  40.  
  41. $ex->setType(AMQP_EX_TYPE_DIRECT); //direct类型
  42.  
  43. $ex->setFlags(AMQP_DURABLE); //持久化
  44.  
  45. $ex->declareExchange();
  46.  
  47. }
   

相关推荐:《ThinkPHP教程

运行 php 目录运行生产者

消费者

  1. public function index()
  2.  
  3. {
  4.  
  5. //连接RabbitMQ
  6.  
  7. $conn_args = array('host' => 'ip', 'port' => '5672', 'login' => 'ymq', 'password' => '123456', 'vhost'
  8.  
  9. => '/');
  10.  
  11. $e_name = 'MQTT_device_event'; //交换机名
  12.  
  13. $q_name = 'q_event'; //队列名
  14.  
  15. $k_route = 'key_event'; //路由key
  16.  
  17. //创建连接和channel
  18.  
  19. $conn = new \AMQPConnection($conn_args);
  20.  
  21. if (!$conn->connect()) {
  22.  
  23. die("Cannot connect to the broker!\n");
  24.  
  25. }
  26.  
  27. $channel = new \AMQPChannel($conn);
  28.  
  29. //创建交换机
  30.  
  31. $ex = new \AMQPExchange($channel);
  32.  
  33. $ex->setName($e_name);
  34.  
  35. $ex->setType(AMQP_EX_TYPE_DIRECT); //direct类型
  36.  
  37. $ex->setFlags(AMQP_DURABLE); //持久化
  38.  
  39. $ex->declareExchange();
  40.  
  41. //创建队列
  42.  
  43. $q = new \AMQPQueue($channel);
  44.  
  45. $q->setName($q_name);
  46.  
  47. $q->setFlags(AMQP_DURABLE); //持久化
  48.  
  49. $q->declareQueue(); //最好队列object在这里declare()下,否则如果是新的queue会报错
  50.  
  51. //绑定交换机与队列,并指定路由键,可以多个路由键
  52.  
  53. $q->bind($e_name, $k_route);
  54.  
  55. //$q->bind($e_name, 'key_33');
  56.  
  57. //阻塞模式接收消息
  58.  
  59. echo "Message:\n";
  60.  
  61. while(True){
  62.  
  63. $q->consume(function($envelope, $queue) {
  64.  
  65. $msg = $envelope->getBody();
  66.  
  67. //处理数据
  68.  
  69. echo $msg . PHP_EOL; //处理消息
  70.  
  71. $queue->ack($envelope->getDeliveryTag()); //手动发送ACK应答
  72.  
  73. });
  74.  
  75. //$q->consume('processMessage', AMQP_AUTOACK); //自动ACK应答
  76.  
  77. }
  78.  
  79. $conn->disconnect();
  80.  
  81. }
   

执行下命令 php rabbitmq

启动即可

查看队列是否被消费

登录 http://127.0.0.115672/#/queues 地址

thinkPHP5如何使用rabbitmq的更多相关文章

  1. 消息队列——RabbitMQ学习笔记

    消息队列--RabbitMQ学习笔记 1. 写在前面 昨天简单学习了一个消息队列项目--RabbitMQ,今天趁热打铁,将学到的东西记录下来. 学习的资料主要是官网给出的6个基本的消息发送/接收模型, ...

  2. RabbitMq应用二

    在应用一中,基本的消息队列使用已经完成了,在实际项目中,一定会出现各种各样的需求和问题,rabbitmq内置的很多强大机制和功能会帮助我们解决很多的问题,下面就一个一个的一起学习一下. 消息响应机制 ...

  3. 如何优雅的使用RabbitMQ

    RabbitMQ无疑是目前最流行的消息队列之一,对各种语言环境的支持也很丰富,作为一个.NET developer有必要学习和了解这一工具.消息队列的使用场景大概有3种: 1.系统集成,分布式系统的设 ...

  4. TODO:macOS上ThinkPHP5和Semantic-UI集成

    TODO:macOS上ThinkPHP5和Semantic-UI集成 1. 全局安装 (on OSX via homebrew)Composer 是 homebrew-php 项目的一部分 2. 把X ...

  5. RabbitMq应用一的补充(RabbitMQ的应用场景)

    直接进入正题. 一.异步处理 场景:发送手机验证码,邮件 传统古老处理方式如下图 这个流程,全部在主线程完成,注册->入库->发送邮件->发送短信,由于都在主线程,所以要等待每一步完 ...

  6. RabbitMq应用一

    RabbitMq应用一 RabbitMQ的具体概念,百度百科一下,我这里说一下我的理解,如果有少或者不对的地方,欢迎纠正和补充. 一个项目架构,小的时候,一般都是传统的单一网站系统,或者项目,三层架构 ...

  7. 缓存、队列(Memcached、redis、RabbitMQ)

    本章内容: Memcached 简介.安装.使用 Python 操作 Memcached 天生支持集群 redis 简介.安装.使用.实例 Python 操作 Redis String.Hash.Li ...

  8. 消息队列性能对比——ActiveMQ、RabbitMQ与ZeroMQ(译文)

    Dissecting Message Queues 概述: 我花了一些时间解剖各种库执行分布式消息.在这个分析中,我看了几个不同的方面,包括API特性,易于部署和维护,以及性能质量..消息队列已经被分 ...

  9. windows下 安装 rabbitMQ 及操作常用命令

    rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统.它遵循Mozilla Public License开源协议,采用 Erlang 实现的工业级的消息队列(MQ)服务器,Rab ...

随机推荐

  1. Windows怎么安装配置Elasticsearch

    进入Elasticsearch官网,点击Download,Elasticsearch默认端口9200 然后进入下图:有各种版本,我选择windows版本 下载之后,解压得到Elasticsearch文 ...

  2. 洛谷P1523 旅行商简化版(DP)

    题目: P1523 旅行商简化版 解析 可以看做是两个人同时从西往东走,经过不一样的点,走到最东头的方案数 设\(f[i][j]\)表示一个人走到i,一个人走到j的最短距离(\(i<j\)) 第 ...

  3. Vue – 基础学习(4):事件修饰符

    Vue – 基础学习(3):事件修饰符

  4. oracle高级部分

    回顾 多表关联查询的方式 内连接 根据AB表关联的条件进行过滤查询,只保留满足条件数据 Select * from a,b where a.xxx=b.xxx; Select * from a inn ...

  5. UUID生成库libuuid和crossguid

    libuuid是一个开源的用于生成UUID(Universally Unique Identifier,通用唯一标识符)的库. 可从https://sourceforge.net/projects/l ...

  6. 隐马尔科夫模型(Hidden Markov Models) 系列之五

    转自:http://blog.csdn.net/eaglex/article/details/6458541 维特比算法(Viterbi Algorithm) 找到可能性最大的隐藏序列 通常我们都有一 ...

  7. AtCoder - 4496 G - k-DMC

    AtCoder - 4496 G - k-DMC 题目 长度为n的字符串,q次查询,问"DMC"(不要求连续)在字符串中出现的次数,其中D和M的距离不超过k. 错误思路 通过遍历字 ...

  8. Win10开启快速启动后关机变重启

    同样可以用来解决,“msconfig引导为空”,“默认操作系统为空”,“win10改为uefi启动后关机变重启”,“legacy转uefi后无法关机” 问题起因 换完主板和cpu后,新的主板在开机时总 ...

  9. 第08节-开源蓝牙协议栈BTStack数据处理

    本篇博客根据韦东山的视频整理所得. 在上篇博客,通过阅读BTStack的源码,大体了解了其框架,对于任何一个BTStack的应用程序都有一个main函数,这个main函数是统一的.这个main函数做了 ...

  10. flask实战-个人博客-数据库-生成虚拟数据 --

    3.生成虚拟数据 为了方便编写程序前台和后台功能,我们在创建数据库模型后就编写生成虚拟数据的函数. 1)管理员 用于生成虚拟管理员信息的fake_admin()函数如下所示: personalBlog ...