• 打开redis终端,lpush task_list 1 ,2,3,4,5…新建消息队列
  • 在App/Lib目录下新建process文件夹,新建Consumer.php,代码如下:
<?php
/*** Created by PhpStorm.* User: Tioncico* Date: 2018/10/18 0018* Time: 9:43*/
namespace App\Lib\Process;
use EasySwoole\Component\Process\AbstractProcess;
use Swoole\Process;
use App\Lib\Redis\Redis;
use EasySwoole\EasySwoole\Logger;
class Consumer extends AbstractProcess
{private $isRun = false;public function run($arg){// TODO: Implement run() method./** 举例,消费redis中的队列数据* 定时500ms检测有没有任务,有的话就while死循环执行*/$this->addTick(500,function (){if(!$this->isRun){$this->isRun = true;$redis = new \redis();//此处为伪代码,请自己建立连接或者维护redis连接while (true){try{$task = Redis::getInstance()->lPop('task_list');if($task){var_dump($task);// do you taskLogger::getInstance()->log($this->getProcessName().'---'.$task,Logger::LOG_LEVEL_INFO,'DEBUG');}else{break;}}catch (\Throwable $throwable){break;}}$this->isRun = false;}//var_dump($this->getProcessName().' task run check');});}public function onShutDown(){// TODO: Implement onShutDown() method.}public function onReceive(string $str, ...$args){// TODO: Implement onReceive() method.}
}
  • 在App/Lib目录下新建Redis文件夹,新建Redis.php,代码如下:
<?php
/*** Created by PhpStorm.* User: niuyueyang* Date: 2019/7/5* Time: 17:07*/
namespace App\Lib\Redis;
use EasySwoole\Component\Singleton;
use EasySwoole\EasySwoole\Config;class Redis{use Singleton;public $redis='';private function __construct(){if(!extension_loaded('redis')){throw new \Exception('redis.so不存在');}try{//            $redisConfig=Config::getInstance()->getConf('redis');
//            var_dump($redisConfig);$this->redis=new \Redis();$result=$this->redis->connect('127.0.0.1',6379,5);}catch(\Exception $e){throw new \Exception($e->getMessage());}if($result===false){throw new \Exception('redis连接失败');}}public function get($key){if(empty($key)){return '';}return $this->redis->get($key);}public function lPop($key){if(empty($key)){return '';}return $this->redis->lPop($key);}public function lPush($key,$val){if(empty($key)){return '';}return $this->redis->lPush($key,$val);}
}
  • 在根目录下的EasySwooleEvent.php下找到mainServerCreate方法,添加如下代码:
public static function mainServerCreate(EventRegister $register){// TODO: Implement mainServerCreate() method.$allNum = 3;for ($i = 0 ;$i < $allNum;$i++){ServerManager::getInstance()->getSwooleServer()->addProcess((new Consumer("consumer_{$i}"))->getProcess());}}
  • 添加生产者,在App/HttpController/Api/Index.php添加如下方法:
<?phpnamespace App\HttpController\Api;
use App\HttpController\Api\Base;
use App\Lib\Redis\Redis;
/*** Class Index* @package App\HttpController*/
class Index extends Base
{//获取url参数function params(){$data=['code'=>0,'params'=>$this->request()->getRequestParam()];return $this->writeJson(200,$data,'获取成功');}function getRedis(){$redis = \EasySwoole\RedisPool\Redis::getInstance()->pool('redis')::defer();$redis->set('name','牛越洋');$data = $redis->get('name');return $this->writeJson(200,  $data,'ok');}public function pub(){$result=Redis::getInstance()->lPush('task_list',$this->request()->getRequestParam()['f']);return $this->writeJson(200,  $result,'ok');}
}

easyswoole消息队列相关推荐

  1. php使用redis消息队列swoole,EasySwoole中利用redis实现消息队列

    什么是队列? 从数据结构上来讲,队列是一种先进先出的数据结构 什么是消息队列? 消息队列可以简单理解为:把要传输的数据放在队列中 消息队列可以分为生产者和消费者,将传输的数据放到消息队列当中,就相当于 ...

  2. Redis 笔记(04)— list类型(作为消息队列使用、在列表头部添加元素、尾部删除元素、查看列表长度、遍历指定列表区间元素、获取指定区间列表元素、阻塞式获取列表元素)

    Redis 的列表是链表而不是数组.这意味着 list 的插入和删除操作非常快,时间复杂度为 O(1),但是索引定位很慢,时间复杂度为 O(n). 当列表弹出了最后一个元素之后,该数据结构自动被删除, ...

  3. 2021年大数据Kafka(一):❤️消息队列和Kafka的基本介绍❤️

    全网最详细的大数据Kafka文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 消息队列和Kafka的基本介绍 一.什么是消息队列 二.消息队列的应用场景 ...

  4. java多线程消息队列_java多线程消息队列的实现

    1.定义一个队列缓存池: private static List queueCache = new LinkedList(); 2.定义队列缓冲池最大消息数,如果达到该值,那么队列检入将等待检出低于该 ...

  5. 关于创建zeromq消息队列,设置和更改IP地址,远程可以访问,不只是本地链接。python代码。

    关于zeromq的创建,绑定本地,和绑定其他客户端的方法. 网上一大堆关于zmq的通信模式的介绍,包括三种类型,具体我就不在描述. 但是他们给的demo,都是创建本地作为server服务端,也作为cl ...

  6. Linux进程间通信(IPC)-------消息队列

    消息队列是进程间通信的一种方法,他有两个操作,一个进程来发送消息(也就是向内存中写入数据),另一个是获取消息(也就是另外一个进程在内存中读取数据) 下面来看消息队列的 创建,写入,读取等需要用到的函数 ...

  7. 【部署类】专题:消息队列MQ、进程守护Supervisor

    目录 1 背景需求 2 技术方案 2.1 消息队列 2.2 进程守护 3 源码介绍 3.1 supervisor部分 3.1.1 supervisord.conf 内容 3.1.2 MM3D.conf ...

  8. websphere mq 查看队列中是否有数据_全网最全的 “消息队列”

    消息队列的使用场景 以下介绍消息队列在实际应用常用的使用场景.异步处理.应用解耦.流量削锋和消息通讯四个场景. 1]异步处理:场景说明:用户注册后,需要发注册邮件和注册短信. 引入消息队列后架构如下: ...

  9. linux进程间通信:POSIX 消息队列 ----异步通信

    在上一篇中linux进程间通信:POSIX 消息队列我们知道消息队列中在消息个数达到了队列所能承载的上限,就会发生消息的写阻塞. 阻塞式的通信影响系统效率,进程之间在通信收到阻塞时并不能去做其他事情, ...

最新文章

  1. cron 工具 每分钟_计划任务 cron和crontab
  2. oracle数据库学习相关笔记-转换函数
  3. 某游戏在华为鸿蒙,华为鸿蒙系统运行安卓游戏出现新状况!安卓换皮论被彻底打脸?...
  4. Thread 线程同步、线程状态
  5. uva 11400——Lighting System Design
  6. django新建一个项目_如何使用Django创建项目
  7. code forces 436 C. Bus
  8. 医疗大数据可能面临的挑战
  9. ai生成图片是什么技术_什么是生成型AI?
  10. 松下服务器a5系列,松下 A5系列)MADHT1505 伺服驱动器
  11. PHP 对接建行龙支付
  12. OC 技术 获取设备的UDID添加到开发者账号(视频)
  13. 令人比较失落的IT圈子-关于华为裁员
  14. React-fiber架构的解释
  15. 代理模式——远程代理(一)
  16. Intel 5 6 7 8系列芯片组介绍
  17. 获取安卓系统自带CA证书
  18. java迅雷下载excel,excel官方下载-excel2018 官方版
  19. java excel row遍历空_用Java巧妙的解析Excel中的POI
  20. excel高级筛选怎么用_如何用excel在筛选状态下怎么复制粘贴?

热门文章

  1. 旧电脑利用:windows网页版魔镜【不需树莓派】
  2. Bootstrap3 Font Awesome 字体图标的基本图标
  3. 一定要收藏!!!2019取消管理费最新最全香港开户攻略
  4. JavaScript——实现九九乘法表
  5. 游戏评测HTML5网站模板是一款适合游戏视频 游戏评测 游戏介绍网站模板。
  6. 国际信用卡如何支付(流程演示图)
  7. 视频火焰烟雾光线闪电科技粒子破碎特效PR标题模板
  8. 凹凸技术揭秘·羚珑页面可视化·成长蜕变之路
  9. 一键清除锁屏密码:苹果手机忘记锁屏密码的解决方案
  10. Hadoop2.6.5安装部署及环境变量配置