【swoole】结合swoole 和 nsq 的实际应用

集合 swoole 的框架设计

为了减小理解度,我尽可能的从源头开始引入php

1. nsq

案例中是使用 swoole 结合一个php 框架实现的是 NSQ 订阅功能。web

启动命令:bash

sudo bash /www/webserver/bin/swoole.sh start nsq adminexport

解释上面一个指令,使用 bash 执行一个项目中的脚本。swoole

start 对应启动命令
nsq : 表明对应使用NSQ 服务
adminexport : 对应的是NSQ 的topic框架

脚本的本质,经过框架的入口文件,根据传参,进入到的不一样的消息中间件,及对应的服务函数

clipboard.png

2. php 订阅

AdminexportService 继承封装好的 SwooleService。 在init方法中,初始化 swoole服务。而且注册回调函数。工具

clipboard.png

AdminexportService 在重写的 swooleWorkerStart 回调函数中,实现了NSQ 的订阅功能spa

clipboard.png

NSQ 消息的处理设计

clipboard.png

  1. 简单封装了重复消息的判断
  2. requeue 没有消费消息的从新投递

3. 引入 swoole

就是构造方法引入 swoole 的实例化
同时,重写 workerStart 的方法。server

因此当执行脚本的时候,也就是启动了 对应的swoole 服务。启动了订阅者的客户端。
不断的消费来自nsq topic 的消息

看吧,swoole 其实也很简单。 把它当作一个工具类,拿来用就能够了。 在实现的时候引入它,经过 WorkerStart 处理分发的消息便可。

固然更好的是使用协程。 另外吹一波,协程就是厉害